AI-powered restaurant management platform built with Lovable, Supabase, and a modern CMS workflow.
An AI-assisted full-stack restaurant management platform built with Lovable and Supabase.
The project demonstrates how an AI-generated website can evolve into a production-ready digital product with database, authentication, CMS workflow, and business operations.
| Homepage | Menu |
|---|---|
![]() |
![]() |
| Staff dashboard | CMS / menu control |
|---|---|
![]() |
![]() |
- Responsive restaurant website
- Dynamic menu browsing with category filters
- Product detail modal (photo, description, allergens, price)
- Online reservation (date, time slot, party size)
- Online ordering workflow (dine-in or takeaway)
- Secure authentication
- Order management with live status updates
- Reservation management
- Menu management (sold out today, seasonal, price changes)
- Product management (create, edit, delete, reorder)
- CSV import / export
- Easy content updates from Google Sheets or Excel
- Database-driven content — the database is the single source of truth
Frontend
- React + TypeScript
- TanStack Start / TanStack Router
- Tailwind CSS
Backend
- Supabase — database, authentication, storage
- Row Level Security for staff-only operations
- Server functions for business logic
- Stripe-ready payment adapter (optional)
Development
- Lovable AI development
- GitHub
- VS Code
Customer
|
React Application
|
Supabase
|-- Database
|-- Authentication
+-- Storage
|
CMS Workflow
git clone <this-repository-url>
cd restaurant-management-platform
npm install
cp .env.example .env # fill in your own Supabase keys
npm run devThe project can be deployed through:
- Cloudflare
- Vercel
- Netlify
Online payment is fully wired but intentionally left unconfigured, so the site ships as a template. Until keys exist, every order is pay-at-counter.
- Add
STRIPE_SECRET_KEYandSTRIPE_WEBHOOK_SECRETas environment secrets. - In Stripe, point a webhook at
https://<your-domain>/api/public/payments/stripe-webhookand subscribe tocheckout.session.completed,checkout.session.async_payment_succeeded,checkout.session.async_payment_failed,checkout.session.expired. - Deploy. Takeaway checkout then redirects to Stripe Checkout; dine-in stays pay-at-counter.
Key files: src/lib/payments.server.ts, src/lib/payments.functions.ts,
src/routes/api/public/payments/stripe-webhook.ts, src/routes/order.$code.tsx.
.envfiles are git-ignored; only.env.exampleis committed.- Never commit service-role keys or Stripe secrets.
- All staff actions are protected by authentication and Row Level Security policies.



