FirstBreath est une plateforme de monitoring modulaire et haute performance, distribuée sur plusieurs dépôts et services.
Vue d'ensemble
Choix d'hébergement
| Critère | Choix | Justification |
|---|
| Hébergeur | OVH VPS (France) | Souveraineté des données (RGPD), latence faible, coût maîtrisé. GPU NVIDIA disponible pour l'inférence IA. |
| PaaS | Dokploy (open-source, auto-hébergé) | Alternative à Heroku/Vercel sans vendor lock-in. Gestion des déploiements via Git + Docker Compose. |
| Reverse Proxy | Traefik (via Dokploy) | Routage dynamique par labels Docker, terminaison TLS automatique (Let's Encrypt), load balancing des API replicas. |
| Conteneurisation | Docker & Docker Compose | Reproductibilité, isolation des services, gestion des ressources (CPU/RAM/GPU). |
Justification des contraintes client
| Contrainte | Réponse apportée |
|---|
| Budget | VPS OVH avec engagement mensuel. Outils open-source exclusivement (Dokploy, Traefik, Grafana, SonarQube). Pas de coûts de licence. |
| Sécurité | TLS obligatoire (Let's Encrypt), conteneurs non-root, réseau Docker isolé (internal, monitor-net), audit de dépendances en CI. Voir Sécurité. |
| Scalabilité | API en 2 replicas avec load balancing Traefik. Services Vision indépendants avec limites de ressources configurables. Architecture microservices facilite le scaling horizontal. |
| Qualité de service | Healthchecks Docker sur chaque service, restart automatique (unless-stopped / always), monitoring Grafana avec alertes. |
Dépôts et technologies
| Dépôt | Rôle | Stack technique |
|---|
| FirstBreath-Platform | Monorepo (Web, Mobile, Docs) | TurboRepo, Next.js, Expo, Docusaurus |
| Control-Hub-Back | API REST + WebSocket | AdonisJS (Node.js), MySQL 8, Redis |
| firstbreath-vision | Système IA / Vision | Python, YOLO, OpenCV CUDA, TensorRT |
| Firstbreath Showcase | Site vitrine (legacy → dashboard produit) | Next.js, Prisma, MariaDB |
Dimensionnement des services
Chaque service est dimensionné via des limites Docker Compose :
| Service | CPU Limit | RAM Limit | GPU | Replicas |
|---|
| API REST | 1.0 | 512 MB | — | 2 |
| WebSocket | 0.5 | 512 MB | — | 1 |
| MySQL 8 | — | 1 GB | — | 1 |
| Redis | — | 300 MB | — | 1 |
| Camera Manager | 4.0 | 2 GB | 1× NVIDIA | 1 |
| Batch Inference | 2.0 | 4 GB | 1× NVIDIA | 1 |
| Redis Worker | 0.5 | 256 MB | — | 1 |
| CloudBeaver | 0.5 | 512 MB | — | 1 |
| Showcase (Web) | 1.0 | 1 GB | — | 1 |
Réseaux Docker
| Réseau | Type | Rôle |
|---|
dokploy-network | External | Expose les services au reverse proxy Traefik |
monitor-net | External | Communication inter-services (Vision ↔ Backend) sans exposition publique |
internal | Bridge | Réseau privé du stack Control-Hub |
control-hub-network | Bridge | Réseau de développement local |