A better interface could not corrupt the source of truth.
The application starts from full Foundry actor exports containing statistics, spells, equipment, features, resources and actions. The challenge was to improve usability — especially on mobile — without mixing permanent data with session-only state or embedding fragile manual fixes into the canonical bundle.
Desktop, mobile and session state are separate concerns.
The mobile interface is not a compressed desktop DOM. It has its own view model and renderers for combat, spells, inventory, features and additional session state.
126 spells, 80 equipment items and 155 features audited.
HP, resources, slots, inventory and temporary state in one session record.
Renewable temporary state with explicit reset through sessionId.
Mobile, browser, session store, remote sync, backend and localization suites.
A public web app does not need to be an open backend.
Remote synchronization uses Apps Script and Google Sheets under a fail-closed model. The public /exec URL is not treated as a credential; reading or writing state requires authenticated POST requests. The access token lives in Script Properties and only temporarily in authorized browser sessionStorage.
Backend QA covers authentication, protocol, schema, conflicts, TTL, whitelist, payload limits and locking; the documented hardening passed 51/51 local checks.
The token is never stored in GitHub, query strings, public logs or configuration files. Fragment-based token import removes the fragment from the address bar immediately.
The project had to survive another session and another operator.
The repository includes a start-here document, agent instructions and a dedicated handoff so work can continue from another account without depending on chat history. Browser QA spans simulated Android Chromium, iPhone WebKit and desktop Chromium, across six characters and five mobile tabs. The spell-localization layer recorded 633 successful checks during validation.
Separation of concerns, state management and operational security.
The technical value is not the game theme. It is the work around synchronization, authentication, independent interfaces, automated QA and maintainable handoff on top of canonical data that must remain stable.