Restaurant Ordering System
A production-grade, multi-branch restaurant ordering system built as a Turborepo monorepo with two Next.js apps — a customer storefront and a staff dashboard. Customers scan a table QR code, browse a per-branch menu, and place orders through a Google-authenticated account; staff manage the catalog, per-branch pricing and menus, and track incoming orders live via a filterable table and a kitchen kanban board. The backend is Supabase (PostgreSQL) with strict Row-Level Security, server-actions-only mutations, and Realtime fan-out for live order updates. The domain is split into 12 independent modules — Identity, Branches, Tables/QR, Products, Menu, Pricing, Promotions, Inventory, Orders, Payments, Notifications, and Customers — each following clean-architecture layering (presentation → application → domain, infrastructure at the edges) with no cross-schema foreign keys and integer-cents money handling.

Overview
A multi-branch restaurant ordering platform — a QR dine-in storefront for customers plus a real-time staff dashboard — built as a modular, clean-architecture monorepo on Next.js and Supabase.
Key Challenges
- Keeping 12 domain modules independently ownable while sharing contracts, without cross-schema coupling.
- Designing RLS policies that scope storefront reads per-customer while giving staff branch-scoped access.
- Getting checkout math right and immutable per order — pricing snapshots plus promotions plus service/VAT charges.
Key Achievements
- Designed a modular clean-architecture monorepo (12 domain modules) with strict layer boundaries and no cross-schema foreign keys.
- Built two Next.js apps — a customer storefront and a staff dashboard — sharing a typed UI component package.
- Implemented QR-based dine-in ordering with required Google OAuth customer accounts and per-customer ordering sessions.
- Enforced data isolation with Supabase Row-Level Security and a server-actions-only mutation boundary.
- Delivered real-time order tracking — a filterable orders table plus a kitchen kanban board — over Supabase Realtime.
- Modeled per-branch menus, pricing, promotions, and inventory reservations with immutable integer-cents checkout math.