Restaurant ordering platform
Working prototypeHimalayan Kitchen
A full-stack restaurant ordering prototype that connects a public QR-accessible menu with checkout, live order tracking, kitchen operations, and staff management.
- My role
- Full-stack developer — independent project
- Development status
- Working prototype
- Intended users
- Independent restaurant owners and managers
The context
Problem being solved
Independent restaurants need a direct ordering channel that gives them control over menus, customer relationships, payments, and daily operations without depending entirely on marketplace platforms.
Audience
Intended users
- Independent restaurant owners and managers
- Kitchen and front-of-house staff
- Customers placing collection or delivery orders
My role and contribution
Full-stack developer — independent project
- Designed and built the customer ordering journey, restaurant dashboard, and kitchen workflow.
- Connected authentication, restaurant-scoped data, realtime order updates, Stripe Checkout, and email notifications.
- Implemented server-side price checks, payment confirmation handling, and token-based public order tracking.
Development status
The core customer, payment, kitchen, and restaurant-management flows are implemented as a deployed prototype. It is not presented as production software with verified restaurant usage.
Main features
QR-accessible storefront with menu categories, dietary information, options, basket, collection, and delivery choices.
Stripe or cash checkout with email notifications and a public live order-status page.
Restaurant dashboard covering onboarding, menus, orders, kitchen display, customers, staff roles, QR codes, and settings.
Technical architecture
The project separates public ordering, authenticated restaurant operations, external payment and email services, and restaurant-scoped Supabase data.
- 01
User interfaces
Next.js + React
Public storefront, checkout, order tracking, dashboard, and kitchen display.
- 02
Application layer
App Router + server logic
Ordering rules, price recalculation, restaurant workflows, and webhook handling.
- 03
External services
Stripe + Nodemailer
Card checkout, payment confirmation, and customer or restaurant email notifications.
- 04
Data layer
Supabase Postgres
Authentication, RLS-protected restaurant data, and realtime order updates.
Technology breakdown
A recruiter-focused view of the main technical responsibilities and service boundaries.
Frontend technology
Next.js, React, TypeScript, and Tailwind CSS provide the responsive storefront and operational dashboards.
- App Router pages for customer and authenticated staff journeys
- Responsive menu, basket, checkout, tracking, and kitchen interfaces
- Reusable controls for menu options, order states, settings, and staff roles
Backend technology
Server-side application logic coordinates ordering rules, trusted pricing, payment confirmation, and restaurant operations.
- Server-side recalculation prevents the browser from setting trusted prices
- Stripe webhook processing controls when paid card orders become visible
- Email and order-status workflows connect customer and restaurant views
Database and storage
Supabase Postgres stores restaurant, menu, staff, customer, and order data with realtime updates.
- Restaurant-scoped records protected with Row Level Security
- Realtime order changes support the kitchen and order-management views
- Customer records are built from order details for restaurant use
External integrations
Focused integrations support payments, email delivery, sign-in, QR access, and operational notifications.
- Stripe Checkout and signed payment webhooks
- Nodemailer with Gmail SMTP
- Google OAuth, QR links, and browser notification capabilities
Authentication and security
Authentication and trust boundaries are handled across Supabase, server-side validation, and payment confirmation.
- Email and password authentication plus Google OAuth
- Row Level Security limits staff access to their restaurant
- Unguessable UUID order-tracking tokens replace sequential public identifiers
- Credentials remain in ignored environment files rather than source control
Testing, accessibility and performance
Testing approach
- The repository provides lint and production-build commands for static analysis and compilation checks.
- Manual scenarios should cover menu configuration, basket totals, collection and delivery, cash and card checkout, webhook confirmation, and kitchen status changes.
- Security checks should include cross-restaurant access attempts, manipulated prices, invalid tracking tokens, and failed payment callbacks.
Accessibility considerations
- Keep menu, basket, checkout, and dashboard controls operable by keyboard.
- Pair order-status colours with readable text and live status messaging.
- Provide labels, validation guidance, and error summaries for ordering and settings forms.
- Respect reduced-motion preferences for realtime and status transitions.
Performance considerations
- Optimise dish images and avoid loading dashboard-only code on the public storefront.
- Scope realtime subscriptions to the relevant restaurant and active workflow.
- Keep payment, email, and notification work outside the critical menu-browsing path.
Learning and next steps
What I learned
- A restaurant platform needs distinct but connected customer, owner, staff, and kitchen experiences.
- Payment flows require server-owned prices and verified callbacks rather than trusting browser state.
- Realtime updates are most useful when their permissions and lifecycle are tightly scoped.
What I would improve next
- Add automated integration and end-to-end coverage for ordering and payment paths.
- Add operational monitoring for failed webhooks, email delivery, and realtime updates.
- Validate the workflow with restaurant staff before making any production-readiness claim.
Project gallery
Screenshots from the current project build.

Interactive preview
Load the live project directly on this page. Requires an active deployment.
Interactive preview available
Loads the live site inside this page. Click to activate — the project must be publicly accessible.
Explore the build
Live demo and source code
Review the current interface or inspect the repository and documented implementation.