AquaLink IoT is a NestJS monorepo with two runtime services and shared libraries. The design keeps operational concerns (config, DB, observability) centralized and reused across apps.
Runtime services
- API service: REST API, auth, domain modules, Swagger docs
- Ingestion worker: MQTT subscriber and telemetry ingestion pipeline
flowchart LR
subgraph Runtime
API[API service]
Worker[Ingestion worker]
end
DB[(PostgreSQL)]
MQTT[(MQTT broker)]
API --> DB
Worker --> DB
MQTT --> Worker
subgraph Shared libraries
Config[config]
DBLib[db]
Obs[observability]
Contracts[contracts]
end
API -.-> Config
API -.-> DBLib
API -.-> Obs
API -.-> Contracts
Worker -.-> Config
Worker -.-> DBLib
Worker -.-> Obs
Worker -.-> Contracts
Shared libraries
config: environment validation and config loadersdb: Prisma client and database accessobservability: health checks and loggingcontracts: shared DTOs and schemas
Supporting services
- PostgreSQL (Prisma)
- MQTT broker (ingestion worker)