# onlyxplore/onlyxplore-frontend architecture

> Architecture diagram of the GitHub repository onlyxplore/onlyxplore-frontend, generated by GitDiagram from its file tree, README and a sample of source files (last updated 2026-09-26). It is an AI-made overview: check details against the source.

- Interactive diagram: https://gitdiagram.com/onlyxplore/onlyxplore-frontend
- Repository: https://github.com/onlyxplore/onlyxplore-frontend

## Overview

OnlyXplore is a travel-exploration platform with separate traveler, host, and admin Next.js apps. The visible traveler journey is discovering itineraries and opening itinerary details; hosts have itinerary creation and management, while admins have operational dashboards and management pages. Authentication is role-specific and, in sampled source, exchanges credentials or Google identity with an API client. The README is empty and most feature-page source was not sampled, so page-to-page and feature-to-backend wiring is shown only where supported by the tree or excerpts.

Main entry points: [`apps/web/src/auth.ts`](https://github.com/onlyxplore/onlyxplore-frontend/blob/main/apps/web/src/auth.ts) (Traveler auth), [`apps/host/src/auth.ts`](https://github.com/onlyxplore/onlyxplore-frontend/blob/main/apps/host/src/auth.ts) (Host auth), [`apps/web/src/lib/api.ts`](https://github.com/onlyxplore/onlyxplore-frontend/blob/main/apps/web/src/lib/api.ts) (Web API client), [`apps/host/src/lib/api.ts`](https://github.com/onlyxplore/onlyxplore-frontend/blob/main/apps/host/src/lib/api.ts) (Host API client)

## Diagram (Mermaid)

```mermaid
flowchart TD

subgraph group_traveler["Traveler experience"]
  node_web_home["Landing page<br/>[page.tsx]"]
  node_web_explore["Explore itineraries<br/>[page.tsx]"]
  node_web_detail["Itinerary details<br/>[page.tsx]"]
end

subgraph group_host["Host workspace"]
  node_host_onboarding["Host onboarding<br/>[page.tsx]"]
  node_host_itineraries["Itinerary workspace<br/>[page.tsx]"]
  node_host_create["Create itinerary<br/>[page.tsx]"]
  node_host_drafts["Itinerary drafts<br/>[page.tsx]"]
  node_host_bookings["Bookings<br/>[page.tsx]"]
  node_host_dashboard["Host dashboard<br/>[page.tsx]"]
end

subgraph group_admin["Admin operations"]
  node_admin_dashboard["Admin dashboard<br/>[page.tsx]"]
  node_admin_analytics["Analytics<br/>[page.tsx]"]
  node_admin_reports["Reports<br/>[page.tsx]"]
  node_admin_components["Component management<br/>[page.tsx]"]
  node_admin_destinations["Destinations<br/>[page.tsx]"]
  node_admin_hosts["Host management<br/>[page.tsx]"]
  node_admin_settings["Settings<br/>[page.tsx]"]
end

subgraph group_identity["Identity and API"]
  node_web_auth["Traveler auth<br/>[auth.ts]"]
  node_web_auth_route["Auth endpoint<br/>[route.ts]"]
  node_web_api["Web API client<br/>[api.ts]"]
  node_host_auth["Host auth<br/>[auth.ts]"]
  node_host_auth_route["Auth endpoint<br/>[route.ts]"]
  node_host_api["Host API client<br/>[api.ts]"]
  node_admin_auth["Admin auth<br/>[auth.ts]"]
  node_admin_auth_route["Auth endpoint<br/>[route.ts]"]
  node_admin_api["Admin API client<br/>[api.ts]"]
end

node_traveler(("Traveler"))
node_google(("Google identity"))
node_backend{{"Application API"}}
node_host_user(("Host"))
node_admin_user(("Administrator"))

node_traveler -->|"visits"| node_web_home
node_traveler -->|"explores"| node_web_explore
node_traveler -->|"opens"| node_web_detail
node_web_auth_route -->|"dispatches"| node_web_auth
node_web_auth -->|"calls"| node_web_api
node_web_auth -.->|"authenticates via"| node_google
node_host_user -->|"visits"| node_host_onboarding
node_host_user -->|"creates"| node_host_create
node_host_user -->|"manages"| node_host_itineraries
node_host_user -->|"reviews"| node_host_drafts
node_host_user -->|"manages"| node_host_bookings
node_host_auth_route -->|"dispatches"| node_host_auth
node_host_auth -->|"calls"| node_host_api
node_host_auth -.->|"authenticates via"| node_google
node_admin_user -->|"opens"| node_admin_dashboard
node_admin_user -->|"reviews"| node_admin_analytics
node_admin_user -->|"reviews"| node_admin_reports
node_admin_user -->|"manages"| node_admin_components
node_admin_user -->|"manages"| node_admin_destinations
node_admin_user -->|"manages"| node_admin_hosts
node_admin_user -->|"configures"| node_admin_settings
node_admin_auth_route -->|"dispatches"| node_admin_auth
node_admin_auth -->|"calls"| node_admin_api
node_web_api -.->|"calls"| node_backend
node_host_api -.->|"calls"| node_backend
node_admin_api -.->|"calls"| node_backend

click node_web_home "https://github.com/onlyxplore/onlyxplore-frontend/blob/main/apps/web/src/app/(public)/page.tsx"
click node_web_explore "https://github.com/onlyxplore/onlyxplore-frontend/blob/main/apps/web/src/app/(public)/explore/page.tsx"
click node_web_detail "https://github.com/onlyxplore/onlyxplore-frontend/blob/main/apps/web/src/app/(public)/itinerary/%5Bid%5D/page.tsx"
click node_web_auth "https://github.com/onlyxplore/onlyxplore-frontend/blob/main/apps/web/src/auth.ts"
click node_web_auth_route "https://github.com/onlyxplore/onlyxplore-frontend/blob/main/apps/web/src/app/api/auth/%5B...nextauth%5D/route.ts"
click node_web_api "https://github.com/onlyxplore/onlyxplore-frontend/blob/main/apps/web/src/lib/api.ts"
click node_host_auth "https://github.com/onlyxplore/onlyxplore-frontend/blob/main/apps/host/src/auth.ts"
click node_host_auth_route "https://github.com/onlyxplore/onlyxplore-frontend/blob/main/apps/host/src/app/api/auth/%5B...nextauth%5D/route.ts"
click node_host_api "https://github.com/onlyxplore/onlyxplore-frontend/blob/main/apps/host/src/lib/api.ts"
click node_host_onboarding "https://github.com/onlyxplore/onlyxplore-frontend/blob/main/apps/host/src/app/onboarding/page.tsx"
click node_host_itineraries "https://github.com/onlyxplore/onlyxplore-frontend/blob/main/apps/host/src/app/(protected)/itineraries/page.tsx"
click node_host_create "https://github.com/onlyxplore/onlyxplore-frontend/blob/main/apps/host/src/app/(protected)/itineraries/create/page.tsx"
click node_host_drafts "https://github.com/onlyxplore/onlyxplore-frontend/blob/main/apps/host/src/app/(protected)/itineraries/drafts/page.tsx"
click node_host_bookings "https://github.com/onlyxplore/onlyxplore-frontend/blob/main/apps/host/src/app/(protected)/bookings/page.tsx"
click node_host_dashboard "https://github.com/onlyxplore/onlyxplore-frontend/blob/main/apps/host/src/app/(protected)/dashboard/page.tsx"
click node_admin_auth "https://github.com/onlyxplore/onlyxplore-frontend/blob/main/apps/admin/src/auth.ts"
click node_admin_auth_route "https://github.com/onlyxplore/onlyxplore-frontend/blob/main/apps/admin/src/app/api/auth/%5B...nextauth%5D/route.ts"
click node_admin_api "https://github.com/onlyxplore/onlyxplore-frontend/blob/main/apps/admin/src/lib/api.ts"
click node_admin_dashboard "https://github.com/onlyxplore/onlyxplore-frontend/blob/main/apps/admin/src/app/(protected)/dashboard/page.tsx"
click node_admin_analytics "https://github.com/onlyxplore/onlyxplore-frontend/blob/main/apps/admin/src/app/(protected)/analytics/page.tsx"
click node_admin_reports "https://github.com/onlyxplore/onlyxplore-frontend/blob/main/apps/admin/src/app/(protected)/reports/page.tsx"
click node_admin_components "https://github.com/onlyxplore/onlyxplore-frontend/blob/main/apps/admin/src/app/(protected)/components/page.tsx"
click node_admin_destinations "https://github.com/onlyxplore/onlyxplore-frontend/blob/main/apps/admin/src/app/(protected)/destinations/page.tsx"
click node_admin_hosts "https://github.com/onlyxplore/onlyxplore-frontend/blob/main/apps/admin/src/app/(protected)/hosts/page.tsx"
click node_admin_settings "https://github.com/onlyxplore/onlyxplore-frontend/blob/main/apps/admin/src/app/(protected)/settings/page.tsx"

classDef toneNeutral fill:#f8fafc,stroke:#334155,stroke-width:1.5px,color:#0f172a
classDef toneBlue fill:#dbeafe,stroke:#2563eb,stroke-width:1.5px,color:#172554
classDef toneAmber fill:#fef3c7,stroke:#d97706,stroke-width:1.5px,color:#78350f
classDef toneMint fill:#dcfce7,stroke:#16a34a,stroke-width:1.5px,color:#14532d
classDef toneRose fill:#ffe4e6,stroke:#e11d48,stroke-width:1.5px,color:#881337
classDef toneIndigo fill:#e0e7ff,stroke:#4f46e5,stroke-width:1.5px,color:#312e81
classDef toneTeal fill:#ccfbf1,stroke:#0f766e,stroke-width:1.5px,color:#134e4a
class node_web_home,node_web_explore,node_web_detail toneBlue
class node_host_onboarding,node_host_itineraries,node_host_create,node_host_drafts,node_host_bookings,node_host_dashboard toneAmber
class node_admin_dashboard,node_admin_analytics,node_admin_reports,node_admin_components,node_admin_destinations,node_admin_hosts,node_admin_settings,node_backend toneMint
class node_web_auth,node_web_auth_route,node_web_api,node_host_auth,node_host_auth_route,node_host_api,node_admin_auth,node_admin_auth_route,node_admin_api toneRose
class node_traveler,node_google,node_host_user,node_admin_user toneIndigo
```

## Components

### Traveler experience

- [Landing page](https://github.com/onlyxplore/onlyxplore-frontend/blob/main/apps/web/src/app/(public)/page.tsx): `apps/web/src/app/(public)/page.tsx`
- [Explore itineraries](https://github.com/onlyxplore/onlyxplore-frontend/blob/main/apps/web/src/app/(public)/explore/page.tsx): `apps/web/src/app/(public)/explore/page.tsx`
- [Itinerary details](https://github.com/onlyxplore/onlyxplore-frontend/blob/main/apps/web/src/app/(public)/itinerary/%5Bid%5D/page.tsx): `apps/web/src/app/(public)/itinerary/[id]/page.tsx`

### Host workspace

- [Host onboarding](https://github.com/onlyxplore/onlyxplore-frontend/blob/main/apps/host/src/app/onboarding/page.tsx): `apps/host/src/app/onboarding/page.tsx`
- [Itinerary workspace](https://github.com/onlyxplore/onlyxplore-frontend/blob/main/apps/host/src/app/(protected)/itineraries/page.tsx): `apps/host/src/app/(protected)/itineraries/page.tsx`
- [Create itinerary](https://github.com/onlyxplore/onlyxplore-frontend/blob/main/apps/host/src/app/(protected)/itineraries/create/page.tsx): `apps/host/src/app/(protected)/itineraries/create/page.tsx`
- [Itinerary drafts](https://github.com/onlyxplore/onlyxplore-frontend/blob/main/apps/host/src/app/(protected)/itineraries/drafts/page.tsx): `apps/host/src/app/(protected)/itineraries/drafts/page.tsx`
- [Bookings](https://github.com/onlyxplore/onlyxplore-frontend/blob/main/apps/host/src/app/(protected)/bookings/page.tsx): `apps/host/src/app/(protected)/bookings/page.tsx`
- [Host dashboard](https://github.com/onlyxplore/onlyxplore-frontend/blob/main/apps/host/src/app/(protected)/dashboard/page.tsx): `apps/host/src/app/(protected)/dashboard/page.tsx`

### Admin operations

- [Admin dashboard](https://github.com/onlyxplore/onlyxplore-frontend/blob/main/apps/admin/src/app/(protected)/dashboard/page.tsx): `apps/admin/src/app/(protected)/dashboard/page.tsx`
- [Analytics](https://github.com/onlyxplore/onlyxplore-frontend/blob/main/apps/admin/src/app/(protected)/analytics/page.tsx): `apps/admin/src/app/(protected)/analytics/page.tsx`
- [Reports](https://github.com/onlyxplore/onlyxplore-frontend/blob/main/apps/admin/src/app/(protected)/reports/page.tsx): `apps/admin/src/app/(protected)/reports/page.tsx`
- [Component management](https://github.com/onlyxplore/onlyxplore-frontend/blob/main/apps/admin/src/app/(protected)/components/page.tsx): `apps/admin/src/app/(protected)/components/page.tsx`
- [Destinations](https://github.com/onlyxplore/onlyxplore-frontend/blob/main/apps/admin/src/app/(protected)/destinations/page.tsx): `apps/admin/src/app/(protected)/destinations/page.tsx`
- [Host management](https://github.com/onlyxplore/onlyxplore-frontend/blob/main/apps/admin/src/app/(protected)/hosts/page.tsx): `apps/admin/src/app/(protected)/hosts/page.tsx`
- [Settings](https://github.com/onlyxplore/onlyxplore-frontend/blob/main/apps/admin/src/app/(protected)/settings/page.tsx): `apps/admin/src/app/(protected)/settings/page.tsx`

### Identity and API

- [Traveler auth](https://github.com/onlyxplore/onlyxplore-frontend/blob/main/apps/web/src/auth.ts): `apps/web/src/auth.ts`
- [Auth endpoint](https://github.com/onlyxplore/onlyxplore-frontend/blob/main/apps/web/src/app/api/auth/%5B...nextauth%5D/route.ts): `apps/web/src/app/api/auth/[...nextauth]/route.ts`
- [Web API client](https://github.com/onlyxplore/onlyxplore-frontend/blob/main/apps/web/src/lib/api.ts): `apps/web/src/lib/api.ts`
- [Host auth](https://github.com/onlyxplore/onlyxplore-frontend/blob/main/apps/host/src/auth.ts): `apps/host/src/auth.ts`
- [Auth endpoint](https://github.com/onlyxplore/onlyxplore-frontend/blob/main/apps/host/src/app/api/auth/%5B...nextauth%5D/route.ts): `apps/host/src/app/api/auth/[...nextauth]/route.ts`
- [Host API client](https://github.com/onlyxplore/onlyxplore-frontend/blob/main/apps/host/src/lib/api.ts): `apps/host/src/lib/api.ts`
- [Admin auth](https://github.com/onlyxplore/onlyxplore-frontend/blob/main/apps/admin/src/auth.ts): `apps/admin/src/auth.ts`
- [Auth endpoint](https://github.com/onlyxplore/onlyxplore-frontend/blob/main/apps/admin/src/app/api/auth/%5B...nextauth%5D/route.ts): `apps/admin/src/app/api/auth/[...nextauth]/route.ts`
- [Admin API client](https://github.com/onlyxplore/onlyxplore-frontend/blob/main/apps/admin/src/lib/api.ts): `apps/admin/src/lib/api.ts`

### Other components

- **Traveler**
- **Google identity**
- **Application API**
- **Host**
- **Administrator**

## Connections

- Traveler → Landing page: visits
- Traveler → Explore itineraries: explores
- Traveler → Itinerary details: opens
- Auth endpoint → Traveler auth: dispatches
- Traveler auth → Web API client: calls
- Traveler auth → Google identity: authenticates via
- Host → Host onboarding: visits
- Host → Create itinerary: creates
- Host → Itinerary workspace: manages
- Host → Itinerary drafts: reviews
- Host → Bookings: manages
- Auth endpoint → Host auth: dispatches
- Host auth → Host API client: calls
- Host auth → Google identity: authenticates via
- Administrator → Admin dashboard: opens
- Administrator → Analytics: reviews
- Administrator → Reports: reviews
- Administrator → Component management: manages
- Administrator → Destinations: manages
- Administrator → Host management: manages
- Administrator → Settings: configures
- Auth endpoint → Admin auth: dispatches
- Admin auth → Admin API client: calls
- Web API client → Application API: calls
- Host API client → Application API: calls
- Admin API client → Application API: calls
