Skip to content

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

  1. Edit workspace.dsl on a PR branch.
  2. Render locally (see workspace-reference.md) to sanity-check the diagrams.
  3. Reference the new view in the ADR / design doc that motivated the change.
  4. Ship the PR.
  • 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).