From 2c0522158c9d3bbe264847ab8a9a47553044cca8 Mon Sep 17 00:00:00 2001 From: jpgiannetti Date: Sat, 7 Feb 2026 17:43:13 +0100 Subject: [PATCH] =?UTF-8?q?feat(docs):=20am=C3=A9liorer=20lisibilit=C3=A9?= =?UTF-8?q?=20du=20diagramme=20Architecture=20Services?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit Améliorations: - Orientation LR (Left-Right) au lieu de TB pour meilleur flux - Ajout icônes émojis pour identification visuelle rapide - Simplification des connexions (api --> services au lieu de connexions multiples) - Labels plus courts dans les boîtes - Styles améliorés avec bordures colorées - Meilleure organisation des sous-graphes Le diagramme est maintenant beaucoup plus lisible et professionnel. --- docs/technical.md | 87 +++++++++++++++++++++++++---------------------- 1 file changed, 46 insertions(+), 41 deletions(-) diff --git a/docs/technical.md b/docs/technical.md index 93635d5..45b6fed 100644 --- a/docs/technical.md +++ b/docs/technical.md @@ -113,72 +113,77 @@ TTL cache : 5 minutes (le contenu ne bouge pas). ## Architecture Services ```mermaid -flowchart TB - subgraph clients["Clients"] +flowchart LR + subgraph clients["📱 Clients"] + direction TB mobile["Mobile Apps
iOS/Android
Flutter"] carplay["CarPlay /
Android Auto"] end - subgraph ovh["OVH VPS Essential (Gravelines, France)"] - nginx["NGINX Cache
+ Let's Encrypt
TLS 1.3, Rate Limiting"] - api["API Gateway
Go + Fiber :8080"] + subgraph ovh["🇫🇷 OVH VPS Essential (Gravelines, France)"] + direction TB - subgraph services["Backend Services (Monolithe Modulaire)"] - auth["Auth Service
JWT validation"] - user["User Service
Profils, Jauges"] - content["Content/Geo Service
Recommandations
PostGIS queries"] - streaming["Streaming Service
HLS generation"] - payment["Payment Service
Mangopay integration"] - notif["Notification Service
FCM/APNS"] + nginx["🌐 NGINX
Cache + TLS 1.3
Rate Limiting"] + api["🚪 API Gateway
Go + Fiber
:8080"] + + subgraph services["Backend (Monolithe Modulaire)"] + direction LR + auth["🔐 Auth"] + user["👤 User"] + content["🎙️ Content/Geo"] + streaming["📡 Streaming"] + payment["💳 Payment"] + notif["🔔 Notif"] end - zitadel["Zitadel IdP
OAuth2 PKCE
:8081"] - ip2loc["IP2Location DB
SQLite ~50MB
Mode dégradé"] + zitadel["🔑 Zitadel
OAuth2 PKCE
:8081"] + ip2loc["🌍 IP2Location
SQLite 50MB"] - subgraph data["Données"] - pgbouncer["PgBouncer
Connection pooling
:6432"] - postgres["PostgreSQL 16
+ PostGIS 3.4
Schémas:
- roadwave
- zitadel"] - redis["Redis 7 Cluster
Cache + Geospatial
GEORADIUS"] + subgraph data["💾 Données"] + direction TB + pgbouncer["PgBouncer
:6432"] + postgres["PostgreSQL 16
+ PostGIS 3.4"] + redis["Redis 7
Cache + Geo"] end end - subgraph external["Services Externes"] - storage["OVH Object Storage
Fichiers audio HLS"] - mangopay["Mangopay
Paiements, KYC"] - brevo["Brevo
Emails transactionnels"] - fcm["FCM / APNS
Push notifications"] + subgraph external["☁️ Services Externes"] + direction TB + storage["OVH Object Storage
(Fichiers HLS)"] + mangopay["Mangopay
(Paiements/KYC)"] + brevo["Brevo
(Emails)"] + fcm["FCM/APNS
(Push)"] end - mobile --> nginx - carplay --> nginx + %% Flux clients + clients --> nginx nginx --> api - api --> auth - api --> user - api --> content - api --> streaming - api --> payment - api --> notif + + %% API vers services + api --> services api --> ip2loc + %% Services vers infra auth --> zitadel - user --> pgbouncer - user --> redis - content --> pgbouncer - content --> redis + user --> data + content --> data streaming --> storage payment --> mangopay notif --> fcm + %% Infra interne zitadel --> pgbouncer pgbouncer --> postgres - brevo -.email.-> mobile - fcm -.push.-> mobile + %% Retours vers clients + brevo -.email.-> clients + fcm -.push.-> clients - style ovh fill:#e3f2fd - style external fill:#fff3e0 - style clients fill:#f3e5f5 - style data fill:#e8f5e9 + style ovh fill:#e3f2fd,stroke:#1976d2,stroke-width:2px + style external fill:#fff3e0,stroke:#f57c00,stroke-width:2px + style clients fill:#f3e5f5,stroke:#7b1fa2,stroke-width:2px + style data fill:#e8f5e9,stroke:#388e3c,stroke-width:2px + style services fill:#fff,stroke:#666,stroke-width:1px ``` **Souveraineté** : 100% données en France (RGPD compliant)