# anilpreetham23/lumiere_restaurant_app architecture

> Architecture diagram of the GitHub repository anilpreetham23/lumiere_restaurant_app, generated by GitDiagram from its file tree, README and a sample of source files (last updated 2026-09-28). It is an AI-made overview: check details against the source.

- Interactive diagram: https://gitdiagram.com/anilpreetham23/lumiere_restaurant_app
- Repository: https://github.com/anilpreetham23/lumiere_restaurant_app

## Overview

Lumiere is a restaurant site with online reservations, QR-based table ordering and bill payment, plus staff administration. Customers browse the public site, scan a table token to order and pay, or submit a reservation; staff manage restaurant operations through admin screens. Payment settlement is confirmed by provider webhooks. The sampled source supports the QR payment and webhook details; other listed screens and actions are represented at their existing paths, but their internal wiring was not sampled.

Main entry points: [`src/lib/supabase/admin.ts`](https://github.com/anilpreetham23/lumiere_restaurant_app/blob/main/src/lib/supabase/admin.ts) (Admin client), [`src/components/TableOrder.tsx`](https://github.com/anilpreetham23/lumiere_restaurant_app/blob/main/src/components/TableOrder.tsx) (Table ordering), [`src/app/(site)`](https://github.com/anilpreetham23/lumiere_restaurant_app/tree/main/src/app/(site)) (Public site), [`src/app/admin/page.tsx`](https://github.com/anilpreetham23/lumiere_restaurant_app/blob/main/src/app/admin/page.tsx) (Admin dashboard)

## Diagram (Mermaid)

```mermaid
flowchart TD

subgraph group_guest["Guest experience"]
  node_public_site["Public site"]
  node_menu["Menu browsing<br/>[page.tsx]"]
  node_menu_data["Menu data<br/>[menu.ts]"]
  node_reservation["Reservations<br/>[page.tsx]"]
  node_public_actions["Public actions<br/>[public.ts]"]
  node_qr_entry["Table token<br/>[page.tsx]"]
  node_table_order["Table ordering<br/>[TableOrder.tsx]"]
  node_cart["Web cart<br/>[CartContext.tsx]"]
end

subgraph group_operations["Restaurant operations"]
  node_admin["Admin dashboard<br/>[page.tsx]"]
  node_admin_floor["Floor management<br/>[page.tsx]"]
  node_admin_kitchen["Kitchen management<br/>[page.tsx]"]
  node_admin_menu["Menu management<br/>[page.tsx]"]
  node_admin_settings["Restaurant settings<br/>[page.tsx]"]
  node_admin_actions["Admin actions<br/>[admin.ts]"]
end

subgraph group_payments["Payments"]
  node_pay_actions["Payment actions<br/>[pay.ts]"]
  node_stripe["Stripe"]
  node_razorpay["Razorpay"]
  node_stripe_hook["Stripe webhook<br/>[route.ts]"]
  node_razorpay_hook["Razorpay webhook<br/>[route.ts]"]
end

subgraph group_platform["Data platform"]
  node_supabase_client["Server client<br/>[server.ts]"]
  node_supabase_admin["Admin client<br/>[admin.ts]"]
  node_database[("Supabase")]
end

node_customer(("Guest"))
node_admin_actor(("Restaurant staff"))

node_customer -->|"browses"| node_public_site
node_public_site -->|"links to"| node_menu
node_public_site -->|"links to"| node_reservation
node_menu -->|"reads"| node_menu_data
node_customer -->|"scans token"| node_qr_entry
node_qr_entry -->|"opens"| node_table_order
node_table_order -->|"starts payment"| node_pay_actions
node_pay_actions -->|"reads session"| node_supabase_client
node_pay_actions -->|"creates intent"| node_supabase_admin
node_table_order -.->|"redirects to"| node_stripe
node_table_order -.->|"opens checkout"| node_razorpay
node_stripe_hook -->|"settles payment"| node_supabase_admin
node_razorpay_hook -->|"settles payment"| node_supabase_admin
node_supabase_client -->|"queries"| node_database
node_supabase_admin -->|"reads and writes"| node_database
node_stripe -.->|"sends events"| node_stripe_hook
node_razorpay -.->|"sends events"| node_razorpay_hook
node_admin_actor -->|"manages"| node_admin
node_admin_actor -->|"manages"| node_admin_floor
node_admin_actor -->|"manages"| node_admin_kitchen
node_admin_actor -->|"manages"| node_admin_menu
node_admin_actor -->|"manages"| node_admin_settings
node_admin -->|"queries"| node_supabase_client
node_admin -->|"updates status"| node_admin_actions
node_admin_actions -->|"writes updates"| node_supabase_admin
node_reservation -->|"submits"| node_public_actions

click node_public_site "https://github.com/anilpreetham23/lumiere_restaurant_app/tree/main/src/app/(site)"
click node_menu "https://github.com/anilpreetham23/lumiere_restaurant_app/blob/main/src/app/(site)/menu/page.tsx"
click node_menu_data "https://github.com/anilpreetham23/lumiere_restaurant_app/blob/main/src/data/menu.ts"
click node_reservation "https://github.com/anilpreetham23/lumiere_restaurant_app/blob/main/src/app/(site)/reservations/page.tsx"
click node_public_actions "https://github.com/anilpreetham23/lumiere_restaurant_app/blob/main/src/actions/public.ts"
click node_qr_entry "https://github.com/anilpreetham23/lumiere_restaurant_app/blob/main/src/app/t/%5Btoken%5D/page.tsx"
click node_table_order "https://github.com/anilpreetham23/lumiere_restaurant_app/blob/main/src/components/TableOrder.tsx"
click node_cart "https://github.com/anilpreetham23/lumiere_restaurant_app/blob/main/src/context/CartContext.tsx"
click node_admin "https://github.com/anilpreetham23/lumiere_restaurant_app/blob/main/src/app/admin/page.tsx"
click node_admin_floor "https://github.com/anilpreetham23/lumiere_restaurant_app/blob/main/src/app/admin/floor/page.tsx"
click node_admin_kitchen "https://github.com/anilpreetham23/lumiere_restaurant_app/blob/main/src/app/admin/kitchen/page.tsx"
click node_admin_menu "https://github.com/anilpreetham23/lumiere_restaurant_app/blob/main/src/app/admin/menu/page.tsx"
click node_admin_settings "https://github.com/anilpreetham23/lumiere_restaurant_app/blob/main/src/app/admin/settings/page.tsx"
click node_admin_actions "https://github.com/anilpreetham23/lumiere_restaurant_app/blob/main/src/actions/admin.ts"
click node_pay_actions "https://github.com/anilpreetham23/lumiere_restaurant_app/blob/main/src/actions/pay.ts"
click node_stripe_hook "https://github.com/anilpreetham23/lumiere_restaurant_app/blob/main/src/app/api/webhooks/stripe/route.ts"
click node_razorpay_hook "https://github.com/anilpreetham23/lumiere_restaurant_app/blob/main/src/app/api/webhooks/razorpay/route.ts"
click node_supabase_client "https://github.com/anilpreetham23/lumiere_restaurant_app/blob/main/src/lib/supabase/server.ts"
click node_supabase_admin "https://github.com/anilpreetham23/lumiere_restaurant_app/blob/main/src/lib/supabase/admin.ts"

classDef toneNeutral fill:#f8fafc,stroke:#334155,stroke-width:1.5px,color:#0f172a
classDef toneBlue fill:#dbeafe,stroke:#2563eb,stroke-width:1.5px,color:#172554
classDef toneAmber fill:#fef3c7,stroke:#d97706,stroke-width:1.5px,color:#78350f
classDef toneMint fill:#dcfce7,stroke:#16a34a,stroke-width:1.5px,color:#14532d
classDef toneRose fill:#ffe4e6,stroke:#e11d48,stroke-width:1.5px,color:#881337
classDef toneIndigo fill:#e0e7ff,stroke:#4f46e5,stroke-width:1.5px,color:#312e81
classDef toneTeal fill:#ccfbf1,stroke:#0f766e,stroke-width:1.5px,color:#134e4a
class node_public_site,node_menu,node_menu_data,node_reservation,node_public_actions,node_qr_entry,node_table_order,node_cart toneBlue
class node_admin,node_admin_floor,node_admin_kitchen,node_admin_menu,node_admin_settings,node_admin_actions toneAmber
class node_pay_actions,node_stripe,node_razorpay,node_stripe_hook,node_razorpay_hook toneMint
class node_supabase_client,node_supabase_admin,node_database toneRose
class node_customer,node_admin_actor toneIndigo
```

## Components

### Guest experience

- [Public site](https://github.com/anilpreetham23/lumiere_restaurant_app/tree/main/src/app/(site)): `src/app/(site)`
- [Menu browsing](https://github.com/anilpreetham23/lumiere_restaurant_app/blob/main/src/app/(site)/menu/page.tsx): `src/app/(site)/menu/page.tsx`
- [Menu data](https://github.com/anilpreetham23/lumiere_restaurant_app/blob/main/src/data/menu.ts): `src/data/menu.ts`
- [Reservations](https://github.com/anilpreetham23/lumiere_restaurant_app/blob/main/src/app/(site)/reservations/page.tsx): `src/app/(site)/reservations/page.tsx`
- [Public actions](https://github.com/anilpreetham23/lumiere_restaurant_app/blob/main/src/actions/public.ts): `src/actions/public.ts`
- [Table token](https://github.com/anilpreetham23/lumiere_restaurant_app/blob/main/src/app/t/%5Btoken%5D/page.tsx): `src/app/t/[token]/page.tsx`
- [Table ordering](https://github.com/anilpreetham23/lumiere_restaurant_app/blob/main/src/components/TableOrder.tsx): `src/components/TableOrder.tsx`
- [Web cart](https://github.com/anilpreetham23/lumiere_restaurant_app/blob/main/src/context/CartContext.tsx): `src/context/CartContext.tsx`

### Restaurant operations

- [Admin dashboard](https://github.com/anilpreetham23/lumiere_restaurant_app/blob/main/src/app/admin/page.tsx): `src/app/admin/page.tsx`
- [Floor management](https://github.com/anilpreetham23/lumiere_restaurant_app/blob/main/src/app/admin/floor/page.tsx): `src/app/admin/floor/page.tsx`
- [Kitchen management](https://github.com/anilpreetham23/lumiere_restaurant_app/blob/main/src/app/admin/kitchen/page.tsx): `src/app/admin/kitchen/page.tsx`
- [Menu management](https://github.com/anilpreetham23/lumiere_restaurant_app/blob/main/src/app/admin/menu/page.tsx): `src/app/admin/menu/page.tsx`
- [Restaurant settings](https://github.com/anilpreetham23/lumiere_restaurant_app/blob/main/src/app/admin/settings/page.tsx): `src/app/admin/settings/page.tsx`
- [Admin actions](https://github.com/anilpreetham23/lumiere_restaurant_app/blob/main/src/actions/admin.ts): `src/actions/admin.ts`

### Payments

- [Payment actions](https://github.com/anilpreetham23/lumiere_restaurant_app/blob/main/src/actions/pay.ts): `src/actions/pay.ts`
- **Stripe**
- **Razorpay**
- [Stripe webhook](https://github.com/anilpreetham23/lumiere_restaurant_app/blob/main/src/app/api/webhooks/stripe/route.ts): `src/app/api/webhooks/stripe/route.ts`
- [Razorpay webhook](https://github.com/anilpreetham23/lumiere_restaurant_app/blob/main/src/app/api/webhooks/razorpay/route.ts): `src/app/api/webhooks/razorpay/route.ts`

### Data platform

- [Server client](https://github.com/anilpreetham23/lumiere_restaurant_app/blob/main/src/lib/supabase/server.ts): `src/lib/supabase/server.ts`
- [Admin client](https://github.com/anilpreetham23/lumiere_restaurant_app/blob/main/src/lib/supabase/admin.ts): `src/lib/supabase/admin.ts`
- **Supabase**

### Other components

- **Guest**
- **Restaurant staff**

## Connections

- Guest → Public site: browses
- Public site → Menu browsing: links to
- Public site → Reservations: links to
- Menu browsing → Menu data: reads
- Guest → Table token: scans token
- Table token → Table ordering: opens
- Table ordering → Payment actions: starts payment
- Payment actions → Server client: reads session
- Payment actions → Admin client: creates intent
- Table ordering → Stripe: redirects to
- Table ordering → Razorpay: opens checkout
- Stripe webhook → Admin client: settles payment
- Razorpay webhook → Admin client: settles payment
- Server client → Supabase: queries
- Admin client → Supabase: reads and writes
- Stripe → Stripe webhook: sends events
- Razorpay → Razorpay webhook: sends events
- Restaurant staff → Admin dashboard: manages
- Restaurant staff → Floor management: manages
- Restaurant staff → Kitchen management: manages
- Restaurant staff → Menu management: manages
- Restaurant staff → Restaurant settings: manages
- Admin dashboard → Server client: queries
- Admin dashboard → Admin actions: updates status
- Admin actions → Admin client: writes updates
- Reservations → Public actions: submits
