Restaurant Ordering
E-commerce · React + Node (Express) · 14 @molecule/* packages
Toast-like POS with table-side QR ordering, menu management, kitchen display, and real-time order tracking — with built-in Stripe-backed subscription tiers
Try it
Opens instantly. Runs on sample data, so changes reset on reload.
What is inside
Screens (22)
- Landing
/ - Login
/login - Signup
/signup - ForgotPassword
/forgot-password - ResetPassword
/reset-password - OrderDashboard
/dashboard(signed in) - Menu
/menu(signed in) - OrderDetail
/orders/:id(signed in) - Tables
/tables(signed in) - Customers
/customers(signed in) - Analytics
/analytics(signed in) - Settings
/settings(signed in) - MenuItemDetail
/menu/:id(signed in) - CustomerDetail
/customers/:id(signed in) - OrderHistory
/orders/history(signed in) - TableDetail
/tables/:id(signed in) - Reservations
/reservations(signed in) - Notifications
/notifications(signed in) - Profile
/profile(signed in) - Billing
/settings/billing(signed in) - GuestMenu
/menu/guest - GuestCart
/cart
Data model (11 tables)
- customers — id, user_id, name, email, phone, total_visits, total_spent, last_visit_at, …
- devices — id, createdAt, updatedAt, userId, name, pushPlatform, pushSubscription, hasPushSubscription
- menu_items — id, user_id, name, description, price, category, image_url, dietary_tags, …
- notifications — id, user_id, type, payload, read_at, created_at
- order_events — id, order_id, status, metadata, created_at
- order_items — id, order_id, menu_item_id, name, quantity, unit_price, status, special_instructions, …
- orders — id, user_id, table_id, customer_id, table_number, status, subtotal, tax, …
- payments — id, createdAt, updatedAt, userId, transactionId, productId, platformKey, data, …
- reservations — id, user_id, customer_id, table_id, party_size, scheduled_for, status, notes, …
- tables — id, user_id, table_number, seats, section, status, created_at, updated_at
- emergency_contacts — id, user_id, contact_name, contact_phone, created_at, updated_at
API (11 handlers)
- \_debug
api/src/handlers/_debug.ts - analytics
api/src/handlers/analytics.ts - customers
api/src/handlers/customers.ts - emergency-contact
api/src/handlers/emergency-contact.ts - guest
api/src/handlers/guest.ts - kitchen
api/src/handlers/kitchen.ts - menu
api/src/handlers/menu.ts - notifications
api/src/handlers/notifications.ts - orders
api/src/handlers/orders.ts - reservations
api/src/handlers/reservations.ts - tables
api/src/handlers/tables.ts
Subscription tiers
free / pro / team — gated by: maxKitchen, maxMenu, maxOrders, maxTables, advancedFeatures, canExport, retentionDays
Built from 14 @molecule/* packages
@molecule/api-database-postgresql@molecule/api-email-templates@molecule/api-emails-mailgun@molecule/api-entitlements@molecule/api-image-sharp@molecule/api-payments-stripe@molecule/api-realtime-socketio@molecule/api-resource-order@molecule/api-resource-payment@molecule/api-resource-user@molecule/api-uploads-s3@molecule/app-billing-react@molecule/app-data-table@molecule/app-realtime-socketio
Required secrets
DATABASE_URLPostgreSQL connection stringSTRIPE_SECRET_KEYStripe secret API key for payment processingSTRIPE_PUBLISHABLE_KEYStripe publishable key for client-side checkoutSTRIPE_WEBHOOK_SECRETStripe webhook signing secretS3_BUCKETS3 bucket for menu item imagesAWS_ACCESS_KEY_IDAWS access key for S3AWS_SECRET_ACCESS_KEYAWS secret key for S3MAILGUN_API_KEYMailgun API key for receipt emailsMAILGUN_DOMAINMailgun sending domain
The @molecule/* packages are Apache-2.0. The app you build from this template is yours to export and self-host. Licensing