How arvinodel/cafe-website works
Kopi Nako is a cafe ordering web application with customer ordering, shared group carts, order follow-up, and an administrative dashboard. The principal customer journey is browsing and customizing a menu, submitting an order, then viewing its receipt or status. Group ordering adds a collaborative cart and member-readiness stage. The graph also preserves the public site and admin capabilities visible in the tree. Evidence is limited to the README, source index references, and sampled excerpts; unsampled route details and some runtime links are therefore omitted.
Components 29
Customer ordering
- Menu browsing
app/menu/page.tsx - Item options
lib/item-options.ts - Cart state
lib/cart.ts - Checkout
app/checkout/page.tsx
Group ordering
- Group session
lib/group-cart.ts - Shared cart view
app/group/[code]/page.tsx - Group cart routes
app/api/group-carts/route.ts - Group cart service
lib/group-cart-server.ts
Order lifecycle
- Order creation
app/api/orders/create/route.ts - Order pricing
lib/order-pricing.ts - Order history
lib/order-history.ts - Order lookup
app/orders/page.tsx - Order status
app/status/[code]/page.tsx - Order receipt
app/receipt/[code]/page.tsx
Administration
- Admin dashboard
app/admin/(dashboard)/page.tsx - Admin shell
app/admin/AdminShell.tsx - Menu management
app/admin/(dashboard)/menu/page.tsx - Branch management
app/admin/(dashboard)/branches/page.tsx - Site content editor
app/admin/(dashboard)/site-content/page.tsx - Page management
app/admin/(dashboard)/pages/page.tsx - Table management
app/admin/(dashboard)/tables/page.tsx
Site and data
- Branch information
app/api/branch-info/route.ts - Branch client
lib/branch-info.ts - Wait estimates
lib/wait-time.ts - Supabase access
lib/supabase-server.ts - Supabase data
- Public homepage
app/page.tsx - Site content data
lib/site-data.ts
Other components
- Customer
Connections 22
- Customer → Menu browsing: browses
- Menu browsing → Item options: uses options
app/menu/page.tsx - Menu browsing → Cart state: uses cart
app/menu/page.tsx - Menu browsing → Group session: saves session
app/menu/page.tsx - Checkout → Order history: saves order code
app/checkout/page.tsx - Order creation → Item options: keys item lines
app/api/orders/create/route.ts - Order creation → Order pricing: uses pricing
app/api/orders/create/route.ts - Order creation → Supabase access: uses server client
app/api/orders/create/route.ts - Order creation → Supabase data: inserts order
app/api/orders/create/route.ts - Shared cart view → Group session: uses session
app/group/[code]/page.tsx - Group cart routes → Group cart service: uses service
app/api/group-carts/route.ts - Group cart routes → Supabase access: uses server client
- Branch client → Branch information: fetches branch data
lib/branch-info.ts - Branch information → Supabase access: uses server client
app/api/branch-info/route.ts - Branch information → Wait estimates: computes waits
app/api/branch-info/route.ts - Public homepage → Site content data: loads site data
app/page.tsx - Order lookup → Order history: uses history
app/orders/page.tsx - Order status → Order history: saves order code
app/status/[code]/page.tsx - Admin dashboard → Admin shell: uses shell
app/admin/(dashboard)/page.tsx - Menu management → Admin shell: uses shell
app/admin/(dashboard)/menu/page.tsx - Branch management → Admin shell: uses shell
app/admin/(dashboard)/branches/page.tsx - Site content editor → Admin shell: uses shell
app/admin/(dashboard)/site-content/page.tsx