Arquitectura de alto nivel
Este diagrama presenta el flujo de datos de extremo a extremo, desde la instrumentación de campo hasta las interfaces de operación. No expone detalles de implementación interna (puertos, IPs, secretos de configuración ni rutas de sistema de archivos) — el objetivo es comunicar la arquitectura funcional, no el mapa de despliegue.
Flujo de datos
Componentes clave
| Componente | Rol |
|---|---|
| EMQX 5.8 | Broker MQTT; recibe telemetría de todos los instrumentos de campo. |
| apps/ingest | Consumidor NestJS; valida señales, aplica el adaptador imperial→SI y escribe en TimescaleDB. |
| packages/calc-engine | Motor MPMS puro TypeScript (sin dependencias de framework); pipeline de 18 etapas TOV→GOV→GSV→NSV→Masa. |
| TimescaleDB | Postgres con hypertable de series de tiempo; almacena telemetría, snapshots y eventos. |
| apps/api | API NestJS; expone REST y WebSocket para la interfaz de usuario; orquesta laboratorio, custodia y reportes. |
| apps/web | Frontend Next.js 16 + React 19; dashboard SCADA, módulos de laboratorio, custodia e ingeniería. |
| Keycloak 26 | Proveedor de identidad OIDC/SSO; gestión de roles y autoridades granulares (RBAC). |
| MinIO | Almacenamiento de objetos on-premise; tickets PDF/A, adjuntos de laboratorio, backups de reportes. |
Despliegue
TankOS se despliega on-premise mediante Docker Compose en un servidor single-node dentro de la red del cliente. No requiere conectividad a internet para su operación normal. Ningún dato sale de la infraestructura del cliente.
Para instalaciones que requieran alta disponibilidad o despliegue distribuido, existe un Helm chart opcional para Kubernetes — aunque el caso base (y el más común) es el single-node Docker Compose.