Architecture
Visual overview of the syncc platform — all apps, services, databases, external integrations, and the full framework stack.
Monorepo Architecture
Shows every component in the monorepo: client apps, the NestJS backend and its 16 feature modules, external services (OSRM, OpenStreetMap, Twilio, Libélula, GTFS, BunsenCloud AI), data layer (PostgreSQL + PostGIS, Redis), infrastructure (Docker, Prisma), and the Playwright E2E test suite. Connection types are color-coded — see the legend at the bottom of the diagram.

Key architectural rules visible in the diagram
- OSRM is called from the browser/device directly — never proxied through the api-server. This keeps routing fast and avoids backend load.
Line.polylinestores the visual road geometry as a Google Encoded Polyline string.Checkpoint.locationis a PostGISgeography(Point,4326)column — proximity checks useST_DWithin, not the polyline.- Multi-tenant: every Line, Route, Trip, Driver, and Vehicle belongs to a Tenant.
- JWT roles:
SUPER_ADMIN,ADMIN,DRIVER,PASSENGER— enforced via NestJS guards.
Frameworks & Tooling
Per-app breakdown across 7 layers: core framework, language, data/styling/UI, real-time/auth/HTTP, build & deploy, testing, and shared dev tools.

Quick reference
| App | Framework | UI | Native |
|---|---|---|---|
| api-server | NestJS 11 | — | Docker |
| web-admin | Angular 20 | Tailwind + Leaflet | Browser |
| mobile-driver | Ionic 8 + Angular 20 | Ionic UI + Capacitor 7 | iOS / Android |
| passengers-app | Ionic 8 + Angular 20 | Ionic UI + Leaflet | iOS / Android |
| syncc-landing | Angular 20 | Tailwind + tsParticles | Browser |
All apps use TypeScript 5 strict and Node.js 22 LTS. No shared libs/ directory — each app is fully self-contained with its own package.json.
Diagrams source: docs/diagrams/ — SVG files, scalable at any resolution.