Best Tools for a Custom Restaurant Ordering System
Stop paying 20–30% commission. Own your ordering stack.
I built Pizzeria Bestek — a custom ordering system that replaced third-party delivery apps for a real restaurant. Sub-second order latency, real-time kitchen dashboard, Stripe checkout, zero per-order commission. These are the tools that made it work.
WebSocket-based live order updates without a separate server
The kitchen dashboard needs to update the moment an order comes in — no polling, no refresh. Supabase Realtime publishes Postgres row changes over WebSockets. An INSERT on the orders table immediately updates every connected kitchen screen. No separate real-time server, no Redis Pub/Sub to manage.
Customer-facing menu + kitchen dashboard
The customer menu is a simple React SPA — menu categories, item selection, cart, checkout. The kitchen dashboard is a separate React view subscribing to order events. Keeping them as separate routes in the same codebase means one deployment, one domain, no coordination overhead.
Checkout, payment confirmation, webhook-triggered order creation
The right architecture: Stripe Checkout handles payment, the success webhook triggers order creation in Postgres, Realtime pushes the new order to the kitchen. This prevents unpaid orders from reaching the kitchen. Never create an order on the client side before payment confirmation.
Order confirmation to customer on successful payment
Customers expect an email confirmation. Trigger it from the same Stripe webhook that creates the order — one event, two side effects. React Email templates make the confirmation look professional. The order summary, estimated time, and item list are all data you already have.
Zero-config deployment, fast global CDN for the menu page
The customer-facing menu is the highest-traffic page. Vercel's edge CDN serves static assets fast globally. The API routes (cart, order creation, Stripe webhook) run as serverless functions. For a single-restaurant deployment, the free tier is sufficient indefinitely.
For a custom ordering system: Supabase Realtime (live kitchen updates) + React (menu + dashboard) + Stripe (webhook-triggered order creation) + Resend (confirmations) + Vercel (hosting). The total build time for a production-ready system is 3–4 weeks. The commission savings pay for the build in the first 6–12 months for most restaurants.