Offline-first · Retail operations / Android + web
The shop should keep working when the network doesn’t.
Inventory, sales and purchases for small retailers—even when the connection disappears.

The problem
Small retailers need simple records of what they bought, sold and still have. A useful tool must work at the counter without making an account or reliable internet a prerequisite for every action.
What I owned
Stock, purchase and sales workflows, local persistence, Android delivery, account synchronization and public demos. Companion BI work adds business dashboards and forecasting context.
The difficult constraint
Offline device data, anonymous backup and authenticated cross-device synchronization solve different problems. Treating them as one system risks confusing both recovery and ownership.
The architecture
Angular/Ionic runs on Android through Capacitor and in the browser. Local storage keeps records available offline. Signed-in Supabase account sync is distinct from pseudonymous installation backup. Next.js/Recharts powers a separate business dashboard.
A product decision
Give a shop owner an interactive example shop before sign-up. The demo service tracks seeded records separately from user-created records, so experimentation stays local and the owner’s own work can carry into an account.
The result
Stok is published on Android and has a public web surface. Current manifests show Angular 22, TypeScript 6 and Ionic 8; the older README’s Angular 13 description is superseded by the real package manifest.
What this taught me
Offline-first design is about ownership, synchronization and recovery as much as cached screens. A demo is more useful when it lets someone do the work and retain the records they entered.
Evidence & scope +
- Current package.json and architecture/sync/deployment document inspected.
- Storage, account-sync and demo-session source distinguishes device, account and demo state.
- Public app URL and Android package are documented; imagery comes from the real public product.