Skip to content
→ All work

Case study 12 / 26

Restro POS

A multi-tenant restaurant platform: POS checkout, real-time kitchen display, recipe-based inventory, loyalty, shifts and analytics.

Status
Working build
Domain
web
Source of claims
Private repository README (reviewed). Source and deployment are not public.

A NestJS and Next.js monorepo covering the whole floor — POS, tables, kitchen display over WebSockets, QR self-ordering — and the back office: recipe-based stock deduction, purchase orders, loyalty points, employee shifts, expenses and reporting.

01/The problem

A restaurant's front of house, kitchen and stock room all touch the same order. When a dish is sold, the kitchen should see it instantly, the ingredients should leave inventory, the customer should earn points — and none of that should leak between restaurants on a shared platform.

02/The system

A NestJS and Next.js monorepo covering the whole floor — POS, tables, kitchen display over WebSockets, QR self-ordering — and the back office: recipe-based stock deduction, purchase orders, loyalty points, employee shifts, expenses and reporting.

03/Scope

  1. 01POS checkout with menu variants and modifiers, combos, split bills (equal, by item or custom), payments and refunds.
  2. 02Kitchen display and table management updated in real time over Socket.IO.
  3. 03Inventory with recipe-based stock deduction, suppliers and purchase orders.
  4. 04Customer loyalty, employee shifts with cash reconciliation, expenses and real-time analytics.
  5. 05QR self-ordering.
  6. 06Eight seeded roles from owner to chef, with permission guards on the API.

04/Engineering

Order completion is one transaction

Completing an order deducts recipe ingredients and awards loyalty points atomically — the two can never disagree.

Tenant scoping as a convention

Tenant-scoped queries, guards and transactions follow written backend conventions, and tenant isolation has its own tests.

Real-time without polling

Kitchen and floor views subscribe over Socket.IO, so a ticket reaches the kitchen as it is fired.

05/Interface

Interface screenshots of this commercial product are not public. The visual above is an abstract representation of its modules — not the product itself.

06/Tech stack

  • NestJS 10
  • Prisma 5
  • PostgreSQL 16
  • Socket.IO
  • argon2
  • Next.js 15
  • React 19
  • TanStack Query
  • Zustand
  • Recharts
  • Redis
  • Docker Compose

07/Result

Verified outcomes

  • 48 unit tests across 9 suites: totals, discounts and tax, split-bill maths, payments and refunds, order completion, tenant isolation, permission guards, shift reconciliation.
  • A Playwright suite drives login → POS → kitchen → payment → receipt → reports through the real UI.

08/Links

Private commercial codebase — no public links.

Next case study

Sita Shree →