How rameshio/samosa-house-qr-menu works
Samosa House is a mobile-first restaurant website and QR menu: customers open a location-specific menu, browse categories, and use dietary filters and ordering links. The client also contains local admin screens for menu editing, publishing, staff, and audit workflows; the deployed App route currently displays an admin-unavailable notice. Express exposes public menu/status and protected admin APIs, with menu data read from Prisma. The README describes JSON-shaped menu output; sampled source confirms the repository mapping and admin writes. Frontend-to-API details and unsampled route wiring are shown only where supported by the documented architecture or app registration.
Main entry points: app.js Express app · client.js Prisma client · App.jsx Client router · MenuPage.jsx Menu page
Components 29
Customer Menu
- Client router
client/src/App.jsx - Logo intro
client/src/components/LogoIntro.jsx - Menu page
client/src/pages/MenuPage.jsx - Menu browsing UI
client/src/components/MenuSection.jsx - Category navigation
client/src/hooks/useCategoryScroll.js - Menu service
client/src/services/menuService.js - API client
client/src/services/apiClient.js
Menu Administration
- Admin pages
client/src/pages/admin - Admin auth state
client/src/contexts/AuthContext.jsx
API Backend
- Express app
server/src/app.js - Menu routes
server/src/routes/menuRoutes.js - Admin menu routes
server/src/routes/adminMenuRoutes.js - Auth routes
server/src/routes/authRoutes.js - Staff routes
server/src/routes/staffRoutes.js - Audit routes
server/src/routes/auditRoutes.js - Image upload route
server/src/routes/uploadRoutes.js - Menu controller
server/src/controllers/menuController.js - Admin menu controller
server/src/controllers/adminMenuController.js - Authentication
server/src/controllers/authController.js - Staff management
server/src/controllers/staffController.js - Password service
server/src/services/authService.js - Image storage
server/src/services/storageService.js - Status routes
server/src/routes/statusRoutes.js
Menu Data
- Menu mapping
server/src/repositories/menuRepository.js - Prisma client
server/prisma/client.js - Application database
Other components
- Customer
- Admin staff
- S3 or local files
Connections 31
- Customer → Client router: opens
- Client router → Logo intro: renders
- Client router → Menu page: routes to
- Menu page → Menu browsing UI: renders
- Menu page → Menu service: loads menu
- Menu browsing UI → Category navigation: tracks sections
- Menu service → API client: uses
- Admin staff → Admin pages: manages menu
- Admin pages → Admin auth state: uses
- Admin pages → API client: requests
- API client → Express app: HTTP requests
- Express app → Menu routes: mounts
- Express app → Admin menu routes: mounts
- Express app → Auth routes: mounts
- Express app → Staff routes: mounts
- Express app → Audit routes: mounts
- Express app → Image upload route: mounts
- Express app → Status routes: mounts
- Menu routes → Menu controller: dispatches
- Admin menu routes → Admin menu controller: dispatches
- Auth routes → Authentication: dispatches
- Staff routes → Staff management: dispatches
- Authentication → Password service: verifies password
- Menu controller → Menu mapping: gets menu
- Menu mapping → Prisma client: queries
- Admin menu controller → Prisma client: reads and writes
- Authentication → Prisma client: reads and writes
- Staff management → Prisma client: reads and writes
- Prisma client → Application database: accesses
- Image upload route → Image storage: stores image
- Image storage → S3 or local files: writes file