Modèle C4
Vues Contexte, Conteneur, Déploiement, Composant et Code de MyBotBox.
Le modèle C4 décrit un système à quatre niveaux de zoom — Contexte → Conteneur → Composant → Code — ainsi qu'une vue Déploiement. Chaque niveau apporte plus de détails sans perdre le fil du niveau précédent.
Niveau 1 — Contexte système
Qui utilise MyBotBox et avec quoi il communique.
flowchart TB
Builder([Builder<br/>designs & runs workflows])
Admin([Org Admin<br/>members · permissions · billing])
MBB[["MyBotBox<br/>visual AI workflow platform"]]
Firebase[Firebase<br/>auth + realtime]
LLM[LLM Providers<br/>17 adapters]
Integrations[90+ Integrations<br/>Slack · Gmail · GitHub · …]
Stripe[Stripe<br/>subscriptions + usage]
Builder --> MBB
Admin --> MBB
MBB --> Firebase
MBB --> LLM
MBB --> Integrations
MBB --> StripeNiveau 2 — Conteneurs
Les unités déployables qui composent la plateforme.
flowchart TB
User([Builder])
Edge[Route 53 → Firebase Hosting<br/>edge rewrite]
subgraph CR ["Cloud Run — Next.js"]
Web[Web App<br/>editor · dashboard · SSR]
API[API Routes<br/>workflows · auth · billing]
Exec[Executor<br/>DAG + 30 handlers]
end
Tasks[Cloud Tasks + 6 Functions<br/>async + polling]
PG[(Cloud SQL<br/>PostgreSQL 17 + pgvector)]
Redis[(Memorystore Redis<br/>rate-limit + cache)]
GCS[(Cloud Storage)]
Auth[Firebase Auth]
FS[(Firestore<br/>realtime collab)]
User --> Edge --> Web
Web --> API
API --> Exec
API --> Tasks --> Exec
API --> PG
Exec --> PG
API --> Redis
API --> GCS
Web --> Auth
Web --> FSDéploiement — Google Cloud
Où s'exécutent les conteneurs. Les environnements de staging et de production sont des projets GCP distincts ; Firebase Hosting est placé en frontal de chaque service Cloud Run.
flowchart TB
User([User browser])
DNS[AWS Route 53]
FH[Firebase Hosting<br/>__session cookie only]
subgraph STG ["Staging · ystudio-core · us-central1"]
SRUN[Cloud Run: mybotbox-app<br/>min 1 · 80 concurrency]
SVPC[VPC connector]
SREDIS[(Memorystore Redis 7)]
SSQL[(Cloud SQL · PostgreSQL 17)]
STASK[Cloud Tasks + 6 Functions]
SSEC[Secret Manager]
SGCS[(Cloud Storage)]
end
subgraph PRD ["Production · mybotbox-prod · us-central1"]
PRUN[Cloud Run: mybotbox-app]
PSQL[(Cloud SQL · mybotbox-db)]
end
User --> DNS --> FH
FH --> SRUN
FH --> PRUN
SRUN --> SVPC --> SREDIS
SRUN --> SSQL
SRUN --> STASK --> SRUN
SRUN --> SSEC
SRUN --> SGCS
PRUN --> PSQLNiveau 3 — Composants (pipeline de sécurité des requêtes)
Chaque requête API traverse les mêmes points de contrôle réutilisables avant l'exécution de toute logique métier. Consultez Pipeline de requêtes pour le parcours complet.
flowchart LR
Caller([Caller]) --> MW[Middleware<br/>session · CSP]
MW --> Guards[API Guards<br/>auth + workspace access]
Guards --> Authn[Auth<br/>Firebase verify]
Guards --> RBAC[RBAC<br/>entity-scoped grant]
Guards --> RL[Rate Limiter<br/>sliding window]
Guards --> Handler[Route Handler<br/>Zod-validated]
Handler --> Exec[Executor]Niveau 4 — Code (les deux contrats)
Le niveau le plus bas : les contrats de types auxquels tout se connecte. Chaque service externe est un port avec des adaptateurs interchangeables choisis selon l'environnement ; chaque bloc est un handler derrière une interface unique vers laquelle l'exécuteur distribue les appels.
classDiagram
direction LR
class EmailProvider {
<<port>>
+send(message) Result
}
class SendgridAdapter
class ResendAdapter
class AzureAdapter
EmailProvider <|.. SendgridAdapter
EmailProvider <|.. ResendAdapter
EmailProvider <|.. AzureAdapter
class BlockHandler {
<<port>>
+canHandle(block) bool
+execute(ctx, block) BlockOutput
}
class AgentHandler
class FunctionHandler
class ApiHandler
class RouterHandler
BlockHandler <|.. AgentHandler
BlockHandler <|.. FunctionHandler
BlockHandler <|.. ApiHandler
BlockHandler <|.. RouterHandlerL'ajout d'un nouveau fournisseur ou type de bloc est additif — implémentez le port, enregistrez l'adaptateur, et les points d'appel existants restent inchangés. C'est ce qui rend la plateforme interchangeable et auto-hébergeable.