Esto, an Iano product · 2025, actively developed
Esto
Multi-tenant restaurant POS, inventory, and digital-menu platform spanning web and a native Android client.
Built + maintained by Iano · 219+ commits, v1.0.1 released
Visit live site ↗Summary
Esto is a multi-tenant restaurant platform that goes well beyond a digital menu: it includes point-of-sale, inventory management, an analytics dashboard, shift handling, and a native Android client with a cloud-mode printing pipeline. The POS is offline-first, so it keeps taking orders through a connection drop and reconciles on reconnect. Tenants are served from their own subdomains, and branding is JSON-configurable so new clients ship without forking the codebase.
Context
Restaurants needed more than an online menu; they needed an operational system (ordering, POS, inventory, printing, reporting) that could be stood up quickly per venue, in multiple languages, without rebuilding for each client.
Role & team
Iano, a two-person marketing agency I co-founded. Both founders engineered the build.
Stack
- Next.js 14
- TypeScript
- Tailwind CSS
- Kotlin (Android client)
- Cloudflare (tenant routing)
- Docker
- Multi-language (English / Arabic)
- WhatsApp ordering integration
Key decisions
- Chose multi-tenancy via subdomain → path rewrite (Cloudflare) over separate per-client deployments so every tenant runs on one codebase and one deploy.
- Chose a native Android client (Kotlin) over web-only to drive a reliable cloud-mode printing pipeline that browsers can't handle well.
- Chose JSON-config-driven branding (`config/brand.ts`, `data/menu.json`) over per-client code forks so onboarding a venue is configuration, not engineering.
Architecture
A Next.js multi-tenant web app where tenant subdomains are rewritten to internal paths at the Cloudflare edge; a Kotlin Android client handles the cloud printing pipeline; menus and branding are data-driven via JSON; ordering can flow through WhatsApp; an analytics dashboard surfaces usage; the stack ships via Docker Compose.
Challenges
- Offline-first POS reliability: A venue can't stop taking orders when its connection drops, so order writes queue on the client and reconcile on reconnect rather than blocking on the network. Esto's source is private, but the same class of offline-sync engineering is demonstrated end-to-end in a public, runnable proof-of-concept called inventory-ledger: an append-only movement log as the source of truth, with IndexedDB queuing, crash recovery, and merge-time conflict resolution.
- Shift-close reliability: Hardened the shift-close pipeline after investigation (SHIFT_BUG_INVESTIGATION.md), bumping desktop to 1.0.1.
- POS enterprise hardening: Added configurable tax, multi-currency, and atomic concurrency handling to make the POS production-safe.
- Analytics correctness: Fixed a bug where unique visitors were stuck at 1 on the dashboard overview.
The offline-sync engineering behind this POS is demonstrated in a public, runnable proof-of-concept.
See the inventory-ledger deep-dive →