Madame Pompidor: Real-Time Guest Ordering & Legacy POS Bridge
Live platform for a Malaysian restaurant — QR table ordering with SSE, legacy PHP POS bridge, guest-order cloud app on a dedicated subdomain, and brand site to professional design specifications. A cloud-native POS replacement is planned as a later phase.

Overview
Madame Pompidor is the live digital platform for the eponymous restaurant in Malaysia: guest QR ordering, staff workflows tied to the existing POS, and a brand web presence — with a full cloud POS scoped as a later phase on the same product. The cloud guest-order application (Next.js 16, Prisma 7, MariaDB) runs on a dedicated orders subdomain: venue QR, table picker, live menu synced from the legacy PHP POS, kitchen orders in real time via SSE, and POS-side confirm, billing, and table operations. The legacy system required a deep outbound bridge — catalog push, order ingest, Confirm/Reject, bill lock/reopen, transfer/merge/split/move sync, floor occupancy mirroring, and stock reserve-on-confirm — without breaking waiter or kitchen flows. The marketing site and guest UI follow the design team’s specifications. Production runs on Docker with MariaDB and Nginx on a VPS.
Key Features
Challenges & Solutions
Bridging a decades-old PHP POS without rewriting it meant every guest action had to map to existing sell/item/operation semantics — transfer, merge, and split had to move or merge cloud table sessions in sync with POS floor state, while bill-out could not close the QR party (only pay/cancel releases the table). Stock had to reserve on staff Confirm, not cart add, with catalog pushes merging POS countdowns against cloud holds without double-counting. SSE runs in-process with a DB tick for cross-worker consistency until Redis is needed. High-risk legacy order and billing paths needed surgical hooks while preserving classic waiter and kitchen flows.
What I Learned
Shipping the live platform reinforced legacy integration patterns — outbound bridge APIs, idempotent ingest claims, and regression checklists across dozens of POS touchpoints. Real-time hospitality UX with SSE (not polling) shaped session lifecycle rules for multi-guest tables, floor-hold phone locks, and ghost sessions. Building guest flows and the brand site to external design specs alongside complex domain logic validated coordinating design delivery with application engineering on a multi-surface product. The planned cloud POS will extend this same platform rather than fork a separate product.