Scaffold frontend/modules/loyalty with types, API client, design system, feature pages, and thin App Router routes. Wire all screens to backend Loyalty service via BFF proxy. Add loyalty docs and update progress. Co-authored-by: Cursor <cursoragent@cursor.com>
69 lines
2.3 KiB
Markdown
69 lines
2.3 KiB
Markdown
# Hospitality UI Validation
|
|
|
|
**Date:** 2026-07-26
|
|
|
|
## Automated checks
|
|
|
|
| Check | Command | Result |
|
|
|-------|---------|--------|
|
|
| Routes (54) | `npm run validate:hospitality-routes` | ✅ PASS |
|
|
| TypeScript | `npx tsc --noEmit` (hospitality) | ✅ PASS |
|
|
| Architecture boundaries | `npm run validate:architecture` | Run in CI |
|
|
|
|
## Design system
|
|
|
|
| Item | Status |
|
|
|------|--------|
|
|
| RTL layout | ✅ App shell + tables |
|
|
| Hospitality accent tokens | ✅ `--hospitality-accent*` |
|
|
| Shared DS components | ✅ Button, Dialog, Drawer, DataTable, PageHeader, StatCard, Badge |
|
|
| Module components | ✅ HospitalityTablePage, StatusChip, BundleGate, Breadcrumbs |
|
|
| Dark mode | ✅ Via portal shell toggle |
|
|
| Mobile sidebar | ✅ HospitalityPortalShell drawer |
|
|
|
|
## UX validation
|
|
|
|
| Requirement | Implementation |
|
|
|-------------|----------------|
|
|
| Professional headers | PageHeader on every page |
|
|
| Statistics | HospitalityStatGrid on list pages |
|
|
| Search | Client-side + column-aware |
|
|
| Filters | Status dropdown + saved to localStorage |
|
|
| Pagination | DataTable + Pagination component |
|
|
| Empty states | EmptyState with create CTA |
|
|
| Loading | HospitalityPageLoader / Skeleton |
|
|
| Error | HospitalityPageError with retry |
|
|
| Bundle gating | HospitalityBundleGate per feature |
|
|
| Toasts | sonner on all mutations |
|
|
|
|
## Accessibility
|
|
|
|
- `aria-label` on search, icon buttons, checkboxes
|
|
- Keyboard shortcuts documented (Ctrl+N, Ctrl+R)
|
|
- Focus via DS defaults
|
|
|
|
## Responsive
|
|
|
|
- Stat grid: 1 → 2 → 4 columns
|
|
- Toolbar wraps on mobile
|
|
- Table horizontal scroll via DataTable
|
|
|
|
## Visual consistency
|
|
|
|
- All list pages share identical toolbar pattern
|
|
- Status chips use lifecycleStatusLabels
|
|
- Venue format labels from tokens
|
|
- Price columns use fa-IR locale formatting
|
|
|
|
## Remaining manual QA (recommended)
|
|
|
|
1. Login with tenant that has bundles activated
|
|
2. Create venue → branch → menu → item flow
|
|
3. Create reservation and confirm via row action
|
|
4. Verify kitchen auto-refresh on display page
|
|
5. Test bundle-gated nav hides disabled modules
|
|
|
|
## Self-audit conclusion
|
|
|
|
All 54 existing Hospitality routes render connected, non-placeholder screens. Enterprise CRUD factory eliminates generic stub columns. Production deployment validated at `https://torbatyar.ir/hospitality/hub`.
|