Doolta
Moontill
Live site →From technical architecture to a business tool actually in use: an offline-first PWA point of sale, from code to the shop running on it every day.

Project Details
- Real problemAn independent shop needs a reliable point of sale on an Android tablet, built around its own actual sales flow (search a product, add to cart, checkout, decrement stock, print a receipt), not a generic POS bloated with unused features.
- ConstraintsWork fully offline, with no native app and no SPA framework: a pending-mutation buffer, a service worker, background sync. Stay readable and usable standing at the counter, against a catalog of several hundred products and many sales a day.
- Structural choicesA single self-contained Go binary: migrations, static assets, and templates all embedded, no ORM (raw SQL). Server-side rendering with the standard library, no frontend build step. Every client write goes through a versioned mutation registry, one handler per mutation type and version, each running in its own transaction, which makes offline sync replayable and safe.
- What it proves todayRunning in real production, behind a reverse proxy, with tooled deployment and rollback, documented backup and restore, and an operator runbook. Used daily by an independent shop for its actual sales, not as a demo.
- Associated offerDesign and delivery of a robust business application, from problem to deployment. Builds on the Go / Cloud-Native Architecture offer.
Beyond the developer tool
Most personal projects stop at the prototype. Moontill goes all the way: authentication, storage, offline sync, user interface, deployment, and real operations, for a shop that uses it every day to ring up sales.
Offline-first without unnecessary complexity
No native app, no client-side JavaScript framework: a service worker, a pending-mutation buffer, and background sync are enough to keep the till usable without a connection, then cleanly reconcile sales once connectivity returns. Every client write is versioned and replayed in its own transaction, which makes sync predictable even if the connection drops mid-sale.
One binary, from laptop to production
Migrations, assets, and templates are embedded in the binary. Deployment is a single command to a real production environment, with rollback available, regular backups, and operator documentation for the person actually running the till day to day.
This project demonstrates a capability audits and diagnostics alone can’t show: living through the real tradeoffs of running something in production, from authentication to support, not just recommending them.