MESO.
Two apps,
one food-service ecosystem.
A food-ordering PWA shipped in 25 working days. The POS for the Central Kitchen model — in 20 days. Then we wired them into a monorepo with one rule: only the POS writes to the database. That the architecture is ready for new channels was proven by an AI voice agent taking phone orders — hooked up in 2 days.



25 and 20 days were separate projects: the customer app and the POS. Stage three was the migration to a shared monorepo and full integration.
MESO is a “Smart Asian Comfort” franchise concept — Japanese comfort food in a model that saves on rent and staff, and invests in the product. Operationally it works like this: one Central Kitchen produces the broths, marinades and sauces, and mobile points of sale — food trucks and kiosks — sell them.
This model is great for business and merciless for technology. Off-the-shelf POS systems assume a restaurant with one kitchen and one stockroom. Delivery marketplaces take a commission on every order and keep the customer relationship. And a franchise needs, from day one, something most chains only get after years: central control of recipes, costs and stock across many locations at once.
Instead of bending the off-the-shelf tools, we built our own ecosystem. From scratch.
Your own ordering channel in 25 working days.
Meso Delivery is an installable PWA for delivery and pickup orders. Your own sales channel instead of marketplace commissions: a menu with variants and add-ons, a cart with suggestions, BLIK/card/Przelewy24 payments, the MESO Club loyalty program and live order status.
Challenge #1 — an order that has no right to get lost.
The customer has paid, so the order must reach the kitchen — even if the POS happens to be down. Scroll through five real screens of the app and see what happens underneath at every step: from the payment webhook, through the retry queue with idempotency, to live status.

A POS for the Central Kitchen in 20 working days.
MESOpos is not a regular register. It is the operating system of the whole chain — 11 business modules in a modular-monolith architecture designed for the model: the Central Kitchen produces, the points of sale sell.
Challenge #2 — FEFO, a warehouse that thinks in dates.
In food service it is not enough to know how much of something you have. You need to know which batch and until when. Every goods receipt creates a batch with an expiry date; stock is drawn automatically from the batch expiring soonest (First Expired, First Out). The site manager sees upcoming expirations before they become a loss.
Challenge #3 — food cost without spreadsheets.
Recipes in MESO are nested: the marinade goes into the broth, the broth into the ramen. Changing one ingredient’s price in the Central Kitchen recalculates the cost of every dish across the chain. The owner sees margin at menu-item level — live, not in a quarterly spreadsheet.
From the register screen to food cost.
Click a module to see its screen- Sales (POS) — Register screen with variants and modifiers
- Kitchen (KDS) — Kitchen-screen queue: timers, priorities
- Batches & FEFO — Batch tracking with expiry dates
- Deliveries — Goods receipts into stock and batches
- Users & roles — Permissions, admin panel, API keys







Monorepo: two apps, one source of truth.
Two working apps are not enough if they are meant to grow together. Stage three was the migration to Turborepo with three shared packages: @meso/core (types, enums, Zod schemas), @meso/api-client (a typed HTTP client with retry and backoff) and @meso/supabase.
Everything follows a single architectural rule: only the POS API writes to the database. Delivery and every future channel talk to the POS over REST. A new sales channel is an API client, not a new system.
The POS actively notifies Delivery about status changes via HMAC-SHA256-signed webhooks with retry, and Supabase Realtime delivers the status to the customer’s screen within a second of the cook tapping the KDS. Menu sync runs one way: edit a product once, both channels are up to date.
“A new sales channel is an API client, not a new system” — that rule passed its test sooner than we had planned. The payoff was out of proportion to the effort: zero missed calls, a line open 24 hours a day and orders that land in the kitchen with no human involved — at peak hours nobody has to choose between the pot and the phone.
Production is not a demo. I treat it like production.
- Data access
- Row-Level Security (Supabase)
- API
- JWT + API keys with granular permissions
- Webhooks
- HMAC-SHA256 signatures · retry · idempotency
- Payments
- Przelewy24: BLIK, cards · refunds from the POS
- Tests
- 150+ — Vitest unit + Playwright E2E + production smoke tests
- Monitoring
- Sentry in both apps
- CI / hosting
- Vercel, preview environments, 82 database migrations
- Discovery & specificationThe Central Kitchen + points operating model turned into a functional spec for the POS and a spec for the PWA.
- ArchitectureModular monolith, API contracts, the “only POS writes” rule.
- Design & build: DeliveryThe PWA from landing page to checkout with Przelewy24.
- Build: POS11 modules: KDS, FEFO inventory, BOM recipes, CRM, staff.
- IntegrationAPI v1, HMAC webhooks, retry queues, idempotency.
- AI voice agentPhone orders 24/7: ElevenLabs + Twilio, a worker on Cloudflare, two-way communication with the POS.
- Monorepo migrationTurborepo, shared packages, one pipeline.
- Quality150+ tests, Sentry, production smoke tests.
- Maintenance & growthIterations, fixes and monitoring for the product’s whole life in production.
No handovers between a PM, an analyst, a designer and a developer — and no long decision path on the vendor’s side. One person who has known this ecosystem since day one — every next iteration is cheaper and faster, because nobody has to relearn the context.
MESO got its own commission-free ordering channel and a POS tailored to its operating model.
In 45 working days MESO got infrastructure that chains usually build over years: central recipes and costs, FEFO inventory, KDS, online ordering with payments and a phone line handled by AI. A new point of sale is a database record; a new channel is an API client.
The MESO concept itself was closed in March 2026 — for business reasons, not technological ones. The system went through the full cycle: from specification, through production, to real orders with payments.
45 working days. Two apps. One architecture.
Building a food-service chain and gluing operations together from five tools?
Or maybe you’re interested in the system itself? The entire MESO ecosystem — POS + delivery + AI voice agent — is for sale as a technology asset: production-proven code, documentation and handover support. Write to me and I’ll walk you through the details.



