Skip to content

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.

Monorepo Architecture

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.polyline stores the visual road geometry as a Google Encoded Polyline string.
  • Checkpoint.location is a PostGIS geography(Point,4326) column — proximity checks use ST_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.

Frameworks and Tooling

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.