Applications
The five apps in the monorepo — purpose, framework, port, and key technical characteristics.
The monorepo contains five applications. Four are business-facing web apps; the fifth (apps/docs) is the documentation platform.
apps/web — Operator Back-Office
| Property | Value |
|---|---|
| Framework | Next.js 16 (App Router) |
| Port | 3000 |
| Audience | VTC operators |
| Auth | packages/auth (Better Auth, operator session cookie) |
The main back-office for transport operators. Covers:
- Quotes — multi-line quote cockpit with HT/TTC pricing, trip-type selection, and quote PDF sending.
- Orders & Missions — order pipeline, mission lifecycle, status updates, cancellations.
- Invoicing & Finance — invoice creation, payment registration, credit notes, Finance Hub.
- Pricing & Configuration — zone editor, conflict/aggregation strategies, routes/grids, forfaits, seasonal multipliers.
- Dispatch — Gantt, list, and map views; crew modes; RSE compliance enforcement.
- Reference Data — contacts/CRM, drivers, vehicles, operating bases.
User documentation: Operators space
apps/agency — Agency Portal
| Property | Value |
|---|---|
| Framework | Next.js 16 (App Router) |
| Port | 3001 |
| Audience | Partner agency users |
| Auth | packages/auth (Better Auth, agency portal session; routes filter by agencyId) |
The self-service portal for partner travel agencies. Covers booking wizard, quote requests, mini-CRM, and payment tracking. Agency users are a distinct identity type from operator users — AgencyPortalUser in the data model.
User documentation: Agencies space
apps/tracking — Customer Tracking
| Property | Value |
|---|---|
| Framework | Next.js 16 (App Router) |
| Port | 3002 |
| Audience | End-customers |
| Auth | Public — access via TrackingToken (URL parameter); no PII exposed |
A public, unauthenticated page served per tracking token. Displays live mission status, vehicle category, and driver ETA — never driver name, phone, or personal data. Tokens are created by operators from the mission/quote detail page ("Partager le suivi").
User documentation: Customers space
apps/docs — Documentation Platform
| Property | Value |
|---|---|
| Framework | Next.js 16 + FumaDocs |
| Port | 3003 |
| Output | Static export (output: 'export') — no SSR, no API routes |
| Auth | Public (no authentication) |
| Turbo role | Leaf — no dependency edges to business apps or `packages/database |
The documentation site you are reading now. Hosts two audience classes: User documentation (operators, agencies, drivers, customers) and Developer documentation (this space). Content is physically duplicated per locale (page.en.mdx / page.fr.mdx / page.es.mdx).
Three CI quality gates protect documentation integrity:
- Traceability gate (FR415) — fails if any user-facing FR or registered screen has no documentation page.
- Locale-parity gate (FR417) — fails if EN (the authoring source) is missing for any page.
- Screenshot-drift gate (FR414) — fails if visual drift exceeds 1% after a business app change.
See also: Monorepo layout · Maintenance guides
apps/driver — Chauffeur PWA
| Property | Value |
|---|---|
| Framework | Vite 6 + React Router 7 (PWA) |
| Port | 8080 |
| Audience | Drivers |
| Auth | packages/auth (Better Auth, driver session token) |
| Service Worker | Workbox — offline-capable PWA |
A mobile-first Progressive Web App installed on driver smartphones. Covers daily mission list, mission detail with GPS navigation trigger, live location broadcast, status updates, and push notifications. Uses SSE for real-time dispatch broadcasts from the operator back-office.
User documentation: Drivers space
See also: Packages overview · Data Model