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 loaders
  • db: Prisma client and database access
  • observability: health checks and logging
  • contracts: shared DTOs and schemas

Supporting services

  • PostgreSQL (Prisma)
  • MQTT broker (ingestion worker)