Architecture¶
Single-source-of-truth architecture model for CVNTrade, expressed in
Structurizr DSL at documentation/architecture/workspace.dsl.
Start here if you want the mental model before diving into any ADR.
Current scope¶
The workspace.dsl file describes two views today:
| View | What it shows | Source |
|---|---|---|
| System Context | Who uses CVNTrade, what external systems it depends on (Binance, Scaleway, GitHub, Let's Encrypt). | workspace.dsl |
| Containers | Services inside the platform (Airflow, API, Frontend, Runtime, MLflow, Postgres, Redis, Grafana, OpenProject, Docs) and their primary data flows. | same |
Component-level views are added per ADR, on demand — only where the extra resolution is load-bearing for a decision.
Why DSL, not PlantUML / drawio¶
- Plain text → reviewable in PRs, diffable, versioned.
- One model, many views — change a relationship once, every diagram updates.
- Rendering is open-source (
structurizr-cli) — no lock-in. - Ref: ADR-57 (docs-as-code for architecture artefacts).
Rendering¶
See architecture/workspace-reference.md for the tooling (structurizr-cli, VS Code extension, online Lite preview).
How to change the model¶
- Edit
workspace.dslon a PR branch. - Render locally (see workspace-reference.md) to sanity-check the diagrams.
- Reference the new view in the ADR / design doc that motivated the change.
- Ship the PR.
Related ADRs¶
- ADR-26 — Grafana single entry point for observability (shapes the platform→Grafana edges).
- ADR-39 / ADR-40 — Runtime standalone, paper/live shared kernel (shapes Runtime container).
- ADR-60 / ADR-61 — CandlePipeline vs Hamilton split (deeper than container — triggers component views).