# Navi PDF Page Match Matrix - 2026-05-05

## Inputs Read

- PDF reference: `docs/design/Navi_compressed.pdf` and `/Users/start-tech/Downloads/Navi_compressed.pdf`.
- Markdown docs under `docs/`: product, architecture, design system, QA, release, strategy, operations, and templates.
- Current code surfaces: `apps/mobile`, `apps/api`, `apps/dashboard`, `apps/website`, `packages/types`, `packages/validators`, and `packages/api-client`.

## Key Decisions

- Keep Expo Router for mobile. It is already the active mobile navigation stack and is built on React Navigation.
- Match the PDF's visual direction, not its defects. The implementation must remove duplicated text, OCR spacing errors, non-UAE itinerary defaults, and broken labels.
- Keep business logic in the API. Mobile, website, dashboard, and API remain separate applications connected through typed APIs and shared packages.

## Page Match Matrix

| PDF page | Page name | Mobile status | Dashboard status | Website status | Backend API status | Database status | Role access status | Action required |
|---:|---|---|---|---|---|---|---|---|
| 1 | Splash screen | Partial: route logic exists; visual needs logo/loading polish | Partial: dashboard has login/layout brand, no loading screen | Partial: brand appears in nav/hero | Done: session can be checked through auth/me-style user endpoints | Done: sessions exist | Done: guest/auth split exists | Add final animated splash asset and dashboard loading state |
| 2 | Onboarding 1 | Partial: text/skip/next exist; image-led design missing | Not required | Partial: tourist copy exists, no exact marketing section | Missing CMS endpoint | Missing OnboardingPage model | Public | Add image-led onboarding cards and CMS seed |
| 3 | Onboarding 2 | Partial: step exists; map/planner visual missing | Not required | Partial: trip planner benefit not separated | Partial: feature flags model exists, no trip-planner flag API | FeatureFlag exists | Public | Add visual, feature flag seed, website section |
| 4 | Onboarding 3 | Partial: step exists; service visual missing | Not required | Partial: services list on homepage | Not required | Not required | Public | Add service visual and partner value-prop section |
| 5 | Login | Partial: email/password, forgot, guest, validation exist; Google/Apple missing | Done: dashboard login exists | Missing customer login page | Partial: login/refresh exist; social/logout/me aliases incomplete | Done: credentials/session models exist | Public -> user | Add social auth routes/providers and website login |
| 6 | Create Account | Partial: signup/OTP exists; phone split/confirm password/social missing | Partial: provider invite not built | Missing customer registration page | Partial: signup/OTP/reset exist; verify-phone missing | Done: User/OtpCode/session | Public -> registered | Add confirm password, provider onboarding, website register |
| 7 | Home | Done for current slice: API-backed hero/services/featured/Emirates/translate entry | Partial: content page exists, not homepage CMS | Partial: homepage exists but not API-backed | Partial: listings/destinations/emirates exist; home/banners/services missing | Partial: catalog exists; Banner missing | Guest can browse | Add home aggregate API and banner/content management |
| 8 | Discover | Done for current slice: search/filter/API-backed listings/saved CTA | Partial: listings/content pages exist | Partial: destinations page exists; search missing | Partial: listings/destinations/emirates exist; search endpoint missing | Done for catalog basics | Guest browse; save requires user | Add search API and website discovery |
| 9 | Luxury Stays | Partial: service screen filters by STAY and lists seeded resorts | Partial: listings page exists | Missing stays landing page | Partial: listings kind=STAY; stays aliases/rooms endpoint missing | Listing/Room exist | Guest browse; provider/admin manage | Add dedicated stays APIs, date/guest filters, provider availability |
| 10 | Experiences | Partial: service screen filters by ACTIVITY | Partial: listings/content pages exist | Missing experiences page | Partial: listings kind=ACTIVITY; offers missing | Listing/Category exist | Guest browse; provider/admin manage | Add offers, activity detail, website page |
| 11 | Book a Taxi | Partial: taxi tiers list; no estimate/live booking states | Missing taxi ops page | Optional later | Missing taxi estimate/book/status endpoints | Booking supports TAXI_RIDE; driver assignment missing | Tourist creates; driver assigned only | Add Taxi module, driver role assignment model, mobile state flow |
| 12 | Order Food | Partial: restaurant listings only; no menus/cart/order | Missing orders page | Optional later | Missing food restaurant/menu/order endpoints | Order exists; OrderItem missing | Tourist/order; provider/driver scoped | Add Orders module, OrderItem, restaurant menu/product model |
| 13 | Order Pharmacy | Partial: pharmacy listings and compliance note; no upload/cart/quote | Missing pharmacy orders page | Optional later | Missing pharmacy items/prescriptions/orders | Order exists; Upload/Prescription missing | Tourist/provider/support | Add private upload + prescription approval flow |
| 14 | Grocery | Partial: grocery listings only; no products/cart | Missing grocery orders page | Optional later | Missing grocery products/orders | Order exists; product/order item missing | Tourist/provider/driver | Add product catalog and cart/order flow |
| 15 | SIM Cards | Partial: SIM plan listings only; no SIM order/activation | Missing SIM orders page | Missing SIM landing page | Missing sim plan/order/status aliases | Listing supports SIM_PLAN; activation model missing | Tourist/provider/admin | Add SIM order flow and telecom partner page |
| 16 | Emergency Numbers | Done: API-backed emergency list, offline fallback, native dial confirmation | Missing emergency content admin page | Missing emergency info page | Done: emergency numbers endpoint exists | Done: EmergencyNumber | Public guest-safe | Add location share and admin CRUD |
| 17 | Profile | Partial: guest/sign-in/preferences/logout; stats/recent activity/edit missing | Partial: users page exists | Missing customer profile | Partial: users/me/access; update/delete/session endpoints missing | User/session exist; Profile model missing | User-only | Add Profile model/API and richer mobile profile |
| 18 | My Destinations | Partial: saved listings/destinations and auth guard; tabs/trips filters need polish | Analytics missing | Missing saved page | Done: saved list/add/delete | Done: SavedItem | User-only | Add saved trips tab and analytics without exposing private data |
| 19 | Image Translator | Done in this slice: camera/gallery, translate API, result, history | Analytics missing | Optional later | Done in this slice: image/history/delete | Done in this slice: TranslationJob | User-only | Add real OCR/translation provider credentials and analytics |
| 20 | Trip Planner Step 1 | Partial: Emirates/dates/quick chips exist; calendar UI simplified | Analytics missing | Missing web planner flow | Partial: generate exists; draft missing | Trip/TripStep exist | User-only generate | Add draft API and calendar-range component |
| 21 | Hotel Detail | Partial: listing detail covers hero/summary/rating/rooms; amenities/reviews/map/sticky bottom missing | Listing management partial | Missing hotel detail page | Partial: listing by id with rooms; reviews/maps missing | Listing/Room/Review exist | Guest browse; booking user-only | Add amenities/reviews/map and sticky room CTA |
| 22 | Trip Planner Step 2 | Done basic: party/interests/Navi AI card | Analytics missing | Missing web flow | Partial: no draft patch | Trip fields exist | User-only | Add draft persistence |
| 23 | Select Room | Partial: rooms show inside detail; no separate route/filter | Provider room management missing | Missing room page | Partial: rooms included in listing; quote missing | Room exists | User booking | Add select-room route and booking quote API |
| 24 | Trip Planner Step 3 | Done basic: budget/pace/generate; save-later missing | Analytics missing | Missing web flow | Partial: generate exists; save draft missing | Trip exists | User-only | Add save-for-later/draft |
| 25 | Itinerary Result | Done for UAE generated trips: fetches API trip, saves trip, day-by-day result | Analytics missing | Missing shareable itinerary | Partial: get/list exist; patch/delete missing | Trip/TripStep exist | User-own only | Add patch/delete/shareable route/live map |

## Cross-Surface Gaps

- Website is still a small public shell, not the full marketing/sales site requested.
- Dashboard is operational for users, roles, permissions, businesses, listings, bookings, finance, content, reports, and audit, but not yet for orders, banners, onboarding, marketing pages, support, trip analytics, or translator analytics.
- Provider dashboard exists as scoped dashboard behavior, but provider-specific order/listing/availability workflows are not yet complete.
- API has strong foundations but still needs Orders, Uploads, Marketing Pages, Banners, Onboarding CMS, Support, Notifications, Taxi, Food, Pharmacy, Grocery, SIM order aliases, trip drafts, and richer profile/session/device endpoints.
- Prisma has core identity/catalog/booking/order/payment/saved/trip/audit/content models, but still lacks Profile, OrderItem, UploadFile, Banner, MarketingPage, OnboardingPage, Notification, and dedicated prescription/activation assignment models.

## Next Implementation Order

1. Orders foundation: `OrderItem`, order create/list/update APIs, provider/driver scoped status changes.
2. Mobile carts for food, grocery, pharmacy, and SIM, using the same order contract.
3. Dashboard Orders and Support pages.
4. Banner/onboarding/marketing CMS models and dashboard pages.
5. Website partner and sales pages.
6. Trip planner draft/patch/delete and shareable itinerary.
7. Profile model, edit profile, sessions/devices, delete account.
