# 10 — Website Page Structure

Stack: Next.js App Router, TypeScript, Tailwind CSS, image optimization, locale-prefixed routes.

## Pages

| Path | Purpose | Notes |
|---|---|---|
| `/[locale]/` | Hero + service grid + featured destinations + app CTA | LCP image preloaded |
| `/[locale]/tourists` | Why Navi for travelers, screen showcase, store badges | Press-friendly imagery |
| `/[locale]/partners` | Why partner with Navi, types, apply form | Lead form via server action |
| `/[locale]/destinations` | UAE city grid, filters by emirate | Indexable |
| `/[locale]/destinations/[city]` | City detail, sample listings, gallery | Structured data: `TouristDestination` |
| `/[locale]/about` | Mission, team, milestones | |
| `/[locale]/press` | Press releases, kit | |
| `/[locale]/contact` | Form, support links | |
| `/[locale]/privacy` | Privacy policy | |
| `/[locale]/terms` | Terms of service | |
| `/sitemap.xml`, `/robots.txt` | SEO | |

`locale` ∈ `{en, ar}`. AR routes render RTL. `hreflang` tags are emitted per page.

## SEO

- Per-page metadata (title, description, OG, Twitter card).
- Structured data (`Organization`, `WebSite`, `BreadcrumbList`, `TouristDestination`, `Hotel`).
- Canonical URLs.
- Sitemap auto-generated from content.
- 301 from non-locale paths to default locale.

## Performance budgets

- TTFB ≤ 300 ms cached, ≤ 800 ms uncached.
- LCP ≤ 2.5 s on Moto G4 / Slow-3G.
- Total JS ≤ 200 KB gzip on landing page.

## Forms

`/contact` and `/partners/apply` use server actions; submissions feed `/v1/support/tickets` and `/v1/businesses/applications`.

## Documented assumptions

1. Website lives on `navi.ae`; dashboard on `dashboard.navi.ae`; API on `api.navi.ae`.
2. AR translations come from the same `ContentTranslation` source as mobile/dashboard via `/v1/i18n/content`.
3. App-store badges: link to placeholder URLs; replace at launch.
