TorbatYar/frontend/docs/hospitality-ui-specification.md
Mortezakoohjani 065c053c16 Add complete Torbat Food hospitality frontend connected to backend APIs.
Introduces modules/hospitality with 54 routes, BFF proxy, capability-gated nav, CRUD factory, and architecture validation docs.

Co-authored-by: Cursor <cursoragent@cursor.com>
2026-07-26 20:54:26 +03:30

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.