Introduces modules/hospitality with 54 routes, BFF proxy, capability-gated nav, CRUD factory, and architecture validation docs. Co-authored-by: Cursor <cursoragent@cursor.com>
82 lines
3.0 KiB
Markdown
82 lines
3.0 KiB
Markdown
# Hospitality UI Specification — Torbat Food
|
|
|
|
**Version:** 1.0
|
|
**Date:** 2026-07-26
|
|
**Product:** Torbat Food (Hospitality Platform)
|
|
|
|
## 1. Product vision
|
|
|
|
Enterprise hospitality platform supporting cafe, restaurant, fast food, bakery, cloud kitchen, food court, catering, and related formats. UI adapts to enabled bundles; disabled modules are hidden from navigation.
|
|
|
|
## 2. Design principles
|
|
|
|
| Principle | Implementation |
|
|
|-----------|----------------|
|
|
| RTL first | App shell, tables, forms use RTL layout |
|
|
| Mobile first | Collapsible sidebar, touch-friendly targets (min 44px) |
|
|
| Low cognitive load | Grouped nav, consistent page headers, breadcrumbs |
|
|
| Warm & welcoming | Orange hospitality accent (`--hospitality-accent`) |
|
|
| Enterprise grade | Real API data, permission/bundle gates, audit export |
|
|
| Performance | TanStack Query caching, paginated lists, code-split routes |
|
|
|
|
## 3. Layout system
|
|
|
|
- **Root layout:** `HospitalityRootLayout` — AuthGuard + tenant gate
|
|
- **Hub (`/hospitality/hub`):** Portal picker without sidebar
|
|
- **Management:** `HospitalityPortalShell` — sidebar nav, mobile drawer, dark mode toggle
|
|
|
|
## 4. Page template (list/CRUD)
|
|
|
|
Every data page uses `createHospitalityListPage`:
|
|
|
|
1. Breadcrumb
|
|
2. PageHeader (title, description, actions)
|
|
3. Search toolbar + pagination + CSV export
|
|
4. DataTable with status chips
|
|
5. Dialog create/edit, ConfirmDialog delete
|
|
6. Loading / empty / error / bundle-disabled states
|
|
|
|
## 5. Dashboard (Executive)
|
|
|
|
Widgets wired to live APIs:
|
|
|
|
- Venues count
|
|
- Reservations count
|
|
- Open POS tickets
|
|
- Active kitchen tickets
|
|
- Quick actions (reservations, kitchen, POS, analytics)
|
|
|
|
## 6. Bundle-gated modules
|
|
|
|
| Bundle | UI sections |
|
|
|--------|-------------|
|
|
| `digital_menu` | Menu, categories, items, modifiers, media |
|
|
| `qr_menu` / `qr_ordering` | QR menu, ordering, cart, checkout |
|
|
| `table_service` / `reservation` | Reservations, queue, guests |
|
|
| `pos_lite` / `pos_pro` | POS, register, payments, discounts |
|
|
| `kitchen` | Display, queue, preparation |
|
|
| `*_connector` | Integration registration pages |
|
|
| `analytics` | Reports, snapshots, inventory overview |
|
|
|
|
## 7. Shared components
|
|
|
|
From `@/components/ds`: Button, Input, Dialog, Drawer, DataTable, PageHeader, StatCard, Badge, LoadingState, ErrorState, EmptyState, FormField, Select, ConfirmDialog.
|
|
|
|
Module-specific: `HospitalityTablePage`, `HospitalityStatusChip`, `HospitalityBundleGate`.
|
|
|
|
## 8. Accessibility
|
|
|
|
- `aria-label` on search, icon buttons
|
|
- Keyboard: hub → management navigation via standard links
|
|
- Focus visible on interactive elements (DS defaults)
|
|
|
|
## 9. API contract
|
|
|
|
All pages consume `hospitalityApi` → BFF `/api/hospitality` → service `:8009`.
|
|
|
|
Headers: `Authorization`, `X-Tenant-ID`.
|
|
|
|
## 10. Supported venue formats
|
|
|
|
Backend `VenueFormat` enum surfaced in venue create (future): cafe, coffee_shop, restaurant, fast_food, bakery, pastry, ice_cream, juice_bar, cloud_kitchen, food_court, catering, take_away, other.
|