Sajjad Mahessar Good Merch Group Free audit
~/sajjad $ cat projects/qr-order-and-pay ← cd ../projects Systems

QR order-and-pay platform

Live since Aug 2026

At-table ordering and card payment for tables inside, outside and in the letting rooms. Guest scans, orders and pays; the order lands on a bar tablet in realtime. Runs on its own subdomain, independent of the venue EPOS.

Type
Payments platform
Category
Systems
Built with
PostgreSQL/Supabase · Stripe · Edge Functions · Realtime
Project
1 of 37
// watch · 27s
GUEST · QR EDGE FNORDER STRIPE WEBHOOK BAR SCREEN · REALTIME 0:48 1:52 4:11 0:12
Order flow — guest to Edge Function to bar screen

What I built

  • Schema from scratch — orders, items, catalogue, locations, settings, refunds, audit — with every table and room seeded against an unguessable token.
  • Stripe live payments with webhook reconciliation across four event types, and three Edge Functions covering order creation, webhook handling and refunds.
  • Realtime bar screen: per-order timers, a chime at two minutes escalating at four and six to a full-screen alarm, accept and delivered actions, refuse-with-reason, live sold-out toggle. Refuse-and-refund proven end to end in live service.
  • Food ordering with allergen data enforced at schema level, so no dish can go live without allergen text.
  • Admin console for pricing, menu toggles and service hours, plus a QR print module generating error-correction-level-H cards.

What went wrong

  • Closed a token-enumeration vulnerability before launch by replacing direct table reads with a security-definer lookup returning at most one row.
  • Diagnosed a gateway-level CORS rejection blocking every guest request before the function ever ran.
  • Traced a payment failure to a mangled key value rather than an account problem, by reading the raw error instead of the dashboard.

Schematics

Stripe payments list showing successful live card payments and one refunded order
ORDER TIMER · BAR SCREEN 0:002:004:006:00 ACCEPTED CHIME REPEAT FULL ALARM ACTIONS AVAILABLE THROUGHOUT ACCEPTDELIVEREDSOLD OUT REFUSE + REFUND
GUEST CARDORDER FN STRIPEPAYMENTINTENT WEBHOOK · 4 EVENTS SUCCEEDEDFAILEDCANCELED REFUNDED RECONCILEDAGAINST ORDER
Timer bands — chime at 2:00, escalating at 4:00 and 6:00
Resilience

Database backup system

Nine databases backed up in one command

PostgreSQLpg_dumpSupabase CLIDocker
iOS app

Staff management iOS app

Workforce management on the App Store

SwiftUISupabaseAPNsEdge Functions
No charge

I’ll find the money before you pay me anything.

Send me your software subscriptions and I’ll come back with what’s replaceable and what it’s worth — free, and yours to keep either way. How it works →

Contact

Want the same done to your cost base?

Open to operations, automation and technical operations roles — and to talking with anyone running a multi-site business who suspects they're paying for software they could own instead.