Skip to content

Architecture

The application is a Spring Boot modular monolith backed by a Nuxt frontend. It is deployed as a single unit but designed so that each module can be extracted into an independent microservice without architectural rework.

Principles

  • One deployment, clear boundaries — all modules run in the same process but communicate through explicit API contracts, not shared state or direct database cross-access.
  • Schema isolation — each backend module owns exactly one PostgreSQL schema. No module queries another module's schema directly.
  • Frontend mirrors backend — the Nuxt application is structured in layers that map directly to the backend modules, keeping domain responsibilities consistent across the stack.
  • Single entry point — the frontend communicates exclusively with the BFF, which is responsible for aggregation, authentication enforcement, and routing to the appropriate module.

Module map

ModuleLayer (frontend)Schema (database)Responsibility
BFFAPPAPI gateway, auth enforcement, aggregation
CoreProject core layercoreOrganisations, projects, users, participants, groups, activities, vehicles
OperationOperation layeroperationMovements, alerts, communications
RegistrationRegistration layerregistrationRegistration periods and requests

C4 Model

The architecture is documented using the C4 model: