01 — Frontend Product Overview
Scope: What the Ghasi Melmastoon frontend platform is, who it is for, what it must do, and the non-negotiable product constraints every screen and surface inherits. This is the entry doc for any FE contributor (engineer, designer, PM, QA).
Companions:
02-architecture-overview-frontend.md·03-design-system.md·04-frontend-design-guidelines.md·06-theming-and-tenant-config.md·09-non-functional-requirements.md
1. What we are building
A multi-tenant hospitality operating system for hotels, guesthouses, and serviced-residence operators in Afghanistan, Pakistan, and the broader Central / South Asian region. The frontend layer is the surface area through which every persona — guest, hotel staff, owner, super-admin, OTA partner, kiosk user — accomplishes their work.
The platform spans eight surfaces delivered across four runtimes from one design system, one i18n bundle, and three BFFs.
| # | Surface | Runtime | Audience | Tenant context | Primary BFF |
|---|---|---|---|---|---|
| 1 | Consumer Meta Web | Browser (PWA) | Guests browsing across tenants | Pre-tenant | bff-consumer-service |
| 2 | Tenant Booking Web | Browser (PWA) | Guests committed to a tenant | In-tenant | bff-tenant-booking-service |
| 3 | Guest Portal Web | Browser (auth) | Guests mid-stay / post-stay | In-tenant | bff-tenant-booking-service |
| 4 | Consumer Mobile | iOS + Android (RN) | Guests on phones | Both | both consumer + tenant booking BFFs |
| 5 | Staff Mobile Companion | iOS + Android (RN) | Housekeeping / maintenance / F&B | In-tenant | bff-backoffice-service |
| 6 | Operator Desktop | Electron (Win/Mac/Linux) | Front desk / GM / finance | In-tenant | bff-backoffice-service |
| 7 | Kiosk family | Electron in kiosk mode | Lobby self-checkin / housekeeping board / arrivals TV | In-tenant | bff-backoffice-service |
| 8 | Control Plane Web | Browser (auth) | Super-admin / chain operator | Cross-tenant | bff-backoffice-service (admin scope) |
Plus two distribution surfaces (covered separately): Embeddable booking widget for tenant external sites, and OTA partner portal for B2B distribution.
2. Personas
| Persona | Primary surface(s) | Secondary surface(s) | Frequency | Critical KPI |
|---|---|---|---|---|
| Guest (browser) | Consumer Meta Web | Tenant Booking Web | One-time / occasional | Time-to-confirm; payment success |
| Guest (mobile) | Consumer Mobile | Guest Portal Web | One-time / occasional + post-stay | Cold-start; biometric login adoption |
| Walk-in / kiosk guest | Self-checkin Kiosk | — | Single-session | Time-to-key; abandonment-step |
| Front desk / receptionist | Operator Desktop | Tablet front-desk; Self-checkin Kiosk | All shift | Check-in seconds; no-bookings-lost |
| Housekeeping lead | Operator Desktop (HK board) | Housekeeping Kiosk | All shift | Rooms-cleaned-per-hour |
| Housekeeper (line) | Staff Mobile Companion | Housekeeping Kiosk | All shift | Status-update latency; offline tolerance |
| Maintenance | Staff Mobile Companion | Operator Desktop | All shift | Time-to-resolve |
| F&B runner | Tablet POS | Staff Mobile Companion | All shift | Order-to-table seconds |
| Finance | Operator Desktop | Control Plane Web | Daily / monthly | Reconciliation-error rate |
| GM / Owner | Operator Desktop | Control Plane Web; mobile read-only views | Daily | RevPAR; AI-insight adoption |
| Chain Operator | Control Plane Web | Operator Desktop (impersonation) | Daily | Cross-tenant comparability |
| Super-admin | Control Plane Web | — | Daily | Tenant-onboarding time; outage MTTR |
| OTA Partner | OTA Partner Portal | — | Daily / hourly | Allotment freshness |
| Compliance Officer | Control Plane Web | Operator Desktop (audit log viewer) | Episodic | Audit-trail completeness |
Each persona's full journey set lives in ../journeys/.
3. Non-negotiables (frontend slice)
These six constraints govern every FE choice. None are negotiable without an ADR.
- Three apps, one design system. All client surfaces consume
@ghasi/ui-melmastoon. Raw hex / arbitrary fonts / bespoke spacing in app code are linted out. - All tenant variation is data, not code. No
if (tenantId === ...)branches in shared apps; theming and config flow throughtheme-config-serviceonly. - All API access goes through a BFF. Direct domain-service calls from web/mobile/desktop are forbidden.
- RTL + LTR are first-class. Pashto, Dari, Persian, Arabic, English (Urdu Phase 1, French Phase 2). Logical CSS properties everywhere; mirrored iconography is explicit per
@ghasi/icons/manifest.json. - Offline behaviour is opinionated and tiered. Web has a PWA browse cache; mobile caches recent results in MMKV; desktop is genuinely offline-first with a real local DB and a real sync engine (see
../desktop/21-desktop-app-specification.md). - AI is HITL by default. No frontend ever auto-applies an AI suggestion that mutates guest-facing state (rate, refund, message send, key issuance) without an explicit human accept; provenance is rendered, not hidden.
Performance budgets, accessibility targets, and security posture follow from these and are enforced in CI — see 09-non-functional-requirements.md.
4. Product pillars
Each pillar is the through-line for several journeys and several KPIs.
4.1 Guest experience that beats global OTAs in the region
- Sub-2.5s LCP on Moto G4 / Slow 4G for the Consumer Meta Web home and detail screens
- First-class Pashto / Dari / Urdu RTL — no other regional booking engine ships this fidelity
- Cash-on-arrival as a first-class payment radio, not a footnote
- Trust-by-default UX (no dark patterns; ethical urgency; honest social proof)
4.2 Operator experience that beats Mews / Cloudbeds for small/mid hotels
- Genuinely offline-first desktop — front desk does not lose a booking when the ISP fails
- One-click sub-second navigation between front-desk, housekeeping, finance views
- Operator copilot (HITL): "draft a reply", "summarize stay", "explain anomaly", "suggest upsell"
- Tenant-customizable booking sites without code (block & page builder)
4.3 Multi-channel that respects regional realities
- SMS-first fallback in regions where push notifications are unreliable
- WhatsApp Business as a transactional channel
- Voice / IVR integration for guest concierge in Phase 2
- Embeddable booking widget for tenant external sites (WordPress / Wix)
4.4 Operational realism
- Low-bandwidth / data-saver mode across all consumer surfaces
- Local-AI on desktop (ONNX Runtime Node) when GPU available; cloud fallback otherwise
- Lock vendor independence: encoder USB/serial Phase 1; BLE / NFC Phase 2; mobile key with Apple/Google Wallet Phase 2
4.5 Trust, safety, compliance
- WCAG 2.2 AA across every surface, audited per release
- GDPR data-subject self-service from the Guest Portal
- Tenant data isolation visible in the UI (no cross-tenant leak in admin search results, no cross-tenant theme bleed)
- AI provenance rendered in every AI-generated artifact
5. Surface release sequencing (high-level)
| Release | Surfaces in scope | Out of scope |
|---|---|---|
| R1 | Consumer Meta Web (search/detail/handoff), Tenant Booking Web (booking funnel + cash-on-arrival + card via Adyen), Consumer Mobile (browse + book), Operator Desktop (front desk + housekeeping board + finance basics) | Guest Portal (/manage); Control Plane (super-admin); Kiosk family; Tablet POS; Embed widget; OTA portal; Staff Mobile Companion; mobile-key BLE/Wallet; in-product AI surfaces |
| R2 | Guest Portal Web; Self-checkin Kiosk; Staff Mobile Companion; Embed widget; Operator copilot HITL surface; OpenSearch 2.x migration for meta search (R1 runs Postgres FTS) | AR room preview; voice/IVR; chain switcher |
| R3+ | Tablet front-desk + POS; Arrivals-board kiosk; OTA partner portal; Owner Insight assistant; Mobile-key BLE/Wallet; AR/wayfinding | — |
Detailed sequencing per epic is in ../../roadmap/01-release-1-foundations.md.
6. What "rich, state-of-the-art UI" means here
Not "Bootstrap clone with our colors". Concretely:
- Motion is choreographed, not decorative — drag-drop on the housekeeping board uses spring physics; success states use a 320 ms confetti micro-animation; error states shake then settle in 240 ms; reduced-motion users see a 100 ms opacity transition instead.
- Loading states are named patterns, not generic spinners — skeleton screens that match final layout; data-shape-aware empty states with an action; progressive disclosure for long lists.
- Iconography is curated — Phosphor base set + ~20 custom hospitality glyphs (bed, breakfast, prayer-room, halal-kitchen, women-only-floor) + RTL mirror flags.
- Photography is art-directed — every property has a hero, gallery, and at least one 360° tour by R3.
- Microcopy is reviewed — voice-and-tone is documented per locale; no auto-translated strings ship without human review.
- Density modes are real —
cozyfor guest surfaces,comfortablefor operator desktop default,compactfor power-user dashboards.
The full design system inventory is in 03-design-system.md; the choreography library is in ../catalogs/C10-motion-and-microinteractions.md; the voice & tone guide is in ../catalogs/C12-content-voice-and-tone.md.
7. Out of scope for any FE doc in this set
- Backend service implementation details — see
../../03-microservices/and../../services/<svc>/ - Domain event topic semantics — see
../../04-event-driven-architecture.md - Lock vendor protocol / firmware specifics — see
../../09-lock-and-key-integration.md - Payment provider gateway internals — see
../../10-payments-architecture.md - AI model training / RAG corpus building — see
../../08-ai-architecture.md - Infrastructure provisioning — owned by platform repos, not docs
8. Open questions
- Will the Consumer Mobile app ship a "guest concierge chat" surface in R2, or is that R3? Current AI architecture doc puts it as Phase 2; product PM hasn't confirmed.
- Does the OTA Partner Portal ship as a separate Next.js app or a route group inside the Control Plane? Affects auth model.
- For mobile-key, do we ship the Apple/Google Wallet pass first (lower vendor coupling) or the in-app BLE unlock first (better UX)? Depends on first lock-vendor-with-BLE go-live.
References
README— frontend index and source-of-truth hierarchy02-architecture-overview-frontend.md— stack, monorepo layout, BFF boundary, sync engine../../01-product-overview.md— platform-wide product overview (cross-cutting, not FE-specific)../../roadmap/01-release-1-foundations.md— R1 sequencing