Context
ServeSync is a multi-tenant restaurant operating system I built and shipped as the sole full-stack engineer. It has been running a real restaurant — the Pearl tenant — since July 2026.
One platform covers the whole floor: a mobile-first POS, a self-serve kiosk, online ordering, a kitchen display, and live TV menu boards — all reading from a single source of truth. Around that sit the things a restaurant actually needs to bill and retain: catering, gift cards, combos, and daily cash reconciliation.
The problem
Most restaurants run on a stack of tools that don't talk to each other — one app takes orders, another drives the kitchen, a spreadsheet tracks stock. Nothing agrees, and every change has to be made in three places while service is happening.
Add a second and third way to order — a kiosk in the lobby, a website — and the problem compounds. Three channels, three queues, three chances for the kitchen to miss a ticket.
Design decisions
Mobile-first POS
A server takes orders one-thumbed, mid-rush, in a loud room — so the phone is the primary device, not a desktop back-office. Touch targets, flows, and defaults are sized for that moment rather than adapted down from a wide screen.
One order pipeline, three channels
POS, kiosk, and online all write into the same order pipeline instead of each keeping its own queue, so the kitchen sees one ordered list and a sold-out item disappears everywhere at once.
Real-time over polling
Service moves faster than a refresh interval, so state changes push over Socket.IO — an order fired front-of-house lands on the kitchen display immediately, and menu edits reach the TV boards without a reload.
Multi-tenant from day one
Built for many venues on one codebase with isolated per-tenant data, so onboarding a restaurant is configuration rather than a new deployment to maintain and patch separately.
Stripe Terminal for card-present
Restaurants take payment at the table and the counter, so this uses real card-present hardware flows rather than a web checkout form bolted onto a POS.
Typed end to end
A wrong price or a malformed order is a real-money bug, so Zod validates at the boundary and Drizzle types the database — one shape for the data from Postgres to the UI, most mistakes caught at compile time.
Catering as a shareable link
Corporate catering is negotiated, not self-served, so staff build a discounted delivery order and send one payable link — the customer pays without an account, and the order lands in the same pipeline as everything else.
Gift cards that work anywhere
A card bought at the counter has to spend online and vice versa, so balances live centrally rather than per-channel — sold and redeemed from POS or online checkout against one ledger.
Outcome
Live in production since July 2026, running a working restaurant end to end.
Catering and gift cards are live too, not just built: a corporate catering order paid through a shared link, and gift cards issued and carrying balance against a single ledger.
The best-selling item is the Custom Poke Bowl at 358 units — 14.3% of net revenue on its own. Poke bowls and milk teas together account for half of everything sold, which is the kind of thing the analytics view exists to surface: it tells the owner what to prep, what to promote, and what to cut.
You can see the live tenant at pearl.servesync.ai.