How bekaryab/restaurant works
QADAM serves restaurant customers through desktop and mobile menu experiences that share menu data and ordering, while admins manage dishes and orders. The principal customer flow is browse/search dishes, add quantities to a cart, and submit an idempotent order; the server resolves authoritative prices and availability before persisting it. Distinct admin stages cover Firebase login, menu maintenance, order review, and state transitions. The README documents reservations and other customer pages; their internal wiring is not sampled, so those links are kept conservative.
Main entry points: prisma.ts PostgreSQL · ResponsiveMenuRoot.tsx Mobile menu · route.ts Order creation · adminOrdersViewModel.ts Order management
Components 26
Customer experience
- Desktop book
src/components/book/reference-book/ReferenceBook.tsx - Mobile menu
src/components/ResponsiveMenuRoot.tsx - Menu browsing
src/app/menu/page.tsx - Mobile search
src/features/menu/viewmodel/useMobileSearchViewModel.ts - Cart and quantities
src/features/cart/viewmodel/cartViewModel.ts - Favorites
src/features/favorites/viewmodel/favoritesViewModel.ts - Order submission
src/features/order/viewmodel/orderViewModel.ts - Reservations
src/app/reservation/page.tsx - Customer profile
src/app/profile/page.tsx
Administration
- Admin login
src/features/auth/service/authService.ts - Dashboard
src/features/admin/dashboard/viewmodel/adminDashboardViewModel.ts - Menu management
src/features/admin/menu/viewmodel/adminMenuViewModel.ts - Order management
src/features/admin/orders/viewmodel/adminOrdersViewModel.ts - Admin provisioning
src/app/api/admin/users/route.ts
Application API
- Public menu API
src/app/api/menu/route.ts - Order creation
src/app/api/orders/route.ts - Order status API
src/app/api/orders/[id]/route.ts - Bulk status API
src/app/api/orders/bulk/route.ts - Admin menu API
src/app/api/admin/menu/route.ts - Category API
src/app/api/admin/categories/route.ts - Admin verification
src/app/api/admin/verify/route.ts - Reservation API
src/services/api/reservationApi.ts
Data and identity
- PostgreSQL
src/lib/prisma.ts - Firebase Auth
Other components
- Restaurant visitor
- Admin
Connections 38
- Restaurant visitor → Desktop book: uses desktop
- Restaurant visitor → Mobile menu: uses mobile
- Desktop book → Public menu API: loads menu
- Mobile menu → Public menu API: loads menu
- Menu browsing → Desktop book: renders book
- Menu browsing → Mobile menu: renders shell
- Mobile menu → Mobile search: filters dishes
- Restaurant visitor → Menu browsing: browses menu
- Restaurant visitor → Cart and quantities: adds dishes
- Desktop book → Cart and quantities: adjusts quantities
- Mobile menu → Cart and quantities: adjusts quantities
- Restaurant visitor → Favorites: marks favorites
- Restaurant visitor → Order submission: places order
- Order submission → Order creation: submits items
- Order creation → PostgreSQL: reads dishes
- Order creation → PostgreSQL: writes order
- Restaurant visitor → Reservations: requests booking
- Reservations → Reservation API: sends reservation
- Restaurant visitor → Customer profile: views profile
- Admin → Admin login: signs in
- Admin login → Firebase Auth: authenticates
- Admin login → Admin verification: verifies token
- Admin verification → Firebase Auth: verifies identity
- Admin → Dashboard: reviews metrics
- Dashboard → Order creation: loads orders
- Admin → Menu management: manages dishes
- Menu management → Admin menu API: maintains menu
- Admin menu API → PostgreSQL: reads and writes
- Admin → Order management: manages orders
- Order management → Order creation: loads orders
- Order management → Order status API: changes status
- Order management → Bulk status API: updates batch
- Order status API → PostgreSQL: reads and writes
- Bulk status API → PostgreSQL: reads and writes
- Admin → Category API: manages categories
- Category API → PostgreSQL: reads and writes
- Admin → Admin provisioning: creates admins
- Admin provisioning → Firebase Auth: creates account