System Architecture
Owner: Architecture
Reviewers: Backend, Web, Mobile, DevOps
Status: Draft
Version: 0.1
Last Updated: 2026-09-16
Review Cycle: Per architecture change
Overview
AquaX is composed of a NestJS backend API, React web portal, Expo mobile app, PostgreSQL/TimescaleDB database, Redis, MQTT broker, Telegraf and a standalone IoT worker.
flowchart LR
Web[React Web Portal] --> API[NestJS API]
Mobile[Expo Mobile App] --> API
API --> PG[(PostgreSQL / TimescaleDB)]
API --> Redis[(Redis)]
API --> Storage[Google Cloud Storage]
API --> Email[Email Service]
Device[IoT Devices] --> MQTT[Mosquitto MQTT]
MQTT --> Telegraf[Telegraf]
Telegraf --> PG
PG --> Worker[IoT Worker]
Worker --> API
Confirmed Architecture References
../current/architecture/backend-architecture.md../current/architecture/web-architecture.md../current/architecture/mobile-architecture.md../current/architecture/iot-mqtt-ingestion-architecture.md../current/architecture/aquax-timescaledb-telemetry.md
Key Runtime Boundaries
| Boundary | Responsibility |
|---|---|
| Backend API | Auth, business modules, Prisma access, Swagger, health and integration services. |
| Web portal | Admin/operator UI and role-aware routes. |
| Mobile app | Field and owner-facing role flows. |
| IoT worker | Poll/normalize telemetry and command acknowledgement integration. |
| Database | System of record for business data and telemetry. |