01
Product context
QR Menu is a multi-restaurant web application built around a menu accessible via QR code. The product serves several establishments from a shared foundation, with product and availability management on the restaurant owner’s side, and is progressively extending toward ordering and a kitchen display.
- Public menu accessible via QR code or URL
- Menu, product, and availability management by the restaurant owner
- Multi-restaurant foundation, isolated per establishment
- Progressive extension toward ordering and a kitchen display
02
Main flow
The flow connects menu configuration by the restaurant owner through to order tracking in the kitchen, with strict server-side rules at every step.
- The restaurant configures its menu, categories, products, prices, and availability
- A customer opens the public menu from a QR code or a URL
- They build an order, linked to a table or prepared for pickup
- The order is recorded and confirmed, without exposing an internal identifier
- The kitchen team receives it on a dedicated screen
- Its status progresses through a controlled state machine until completion
03
Menu and ordering
Each restaurant structures its menu by categories and items, with prices, availability, options, and combos. An order can be linked to a table via a contextualized QR code, or prepared for pickup.
- Categories, items, prices, and availability
- Options and combos
- Order linked to a table or to pickup
- Order structured and confirmed before being sent to the kitchen


04
Kitchen display
A dedicated kitchen display lets the team track ongoing orders and their progress, from submission through to completion.
- Active orders, with table or pickup indication
- Controlled transitions: pending → in preparation → ready → completed, with cancellation possible in allowed states
- Order age and pickup time when applicable
- Actions available depending on the order’s current state

05
Overall architecture
The architecture stays deliberately simple, with a consistent stack across frontend, API, and data.
- Frontend — React · Vite · TypeScript · Tailwind
- API — Node.js · Express · TypeScript · Zod
- Data — SQLite
- Authentication / security — Better Auth · server-side sessions · roles · multi-tenant isolation · rate limiting
- Quality — Vitest · Supertest · Playwright
06
Reliability and operations
The reliability of the order → kitchen flow was addressed before adding payment, with several safeguards.
- Idempotency key against double clicks and network retries
- Controlled status transitions to prevent concurrent overwrites
- Opaque public token for order tracking
- Status-change log
- Full-flow tests with Playwright
- Data isolation per restaurant (multi-tenant)
07
Current limits
The project has not launched commercially yet. This page reflects only the features actually developed and tested at the time of publication.
- Real customer payment not included in the published scope
- Real SaaS subscriptions not included in the published scope
- No commercial launch at this stage
- Production deployment, a real pilot, and operational constraints still to be validated