Files

32 lines
1.8 KiB
Markdown

# Architecture diagrams
Mermaid diagrams of the current implementation, kept next to the code so PRs
can update them alongside the change.
**Convention:** when a PR changes the structure drawn here (new/removed types,
new seams, changed relationships), update the affected diagram in the same PR
and add an "Architecture changes" section to the PR description that, per
changed diagram:
1. names exactly which types/relationships changed and how (one sentence);
2. shows a **Before** and an **After** mermaid block — each an *excerpt* of
only the affected classes and their immediate relationships, never the
full diagram (Before comes from the diagram at the merge base).
The committed diagram file stays the full current state; the before/after
excerpts exist only in the PR description so reviewers see the structural
delta at a glance. A pre-PR hook (`.claude/hooks/check-arch-diagrams.sh`)
reminds Claude Code sessions when server code changed but no diagram did.
Together these cover every application package in the repo — every code
change lands inside exactly one detail diagram's scope (plus the overview
when the package map or cross-piece wiring changes):
- [overview.md](overview.md) — system diagram: every package and surface on one page, and how they connect
- [cli-sync.md](cli-sync.md) — class diagram of the CLI and sync engine (`cmd/bdrive` + `internal/{syncer,store,journal,config,daemon,agenthooks,autostart}`)
- [webapp-server.md](webapp-server.md) — class diagram of the `bdrive serve` server (`internal/webapp` + its `internal/remote` seam)
- [webapp-frontend.md](webapp-frontend.md) — module diagram of the hub's React SPA (`internal/webapp/frontend/src`)
Not covered on purpose: `web/docs` (content site, no application code) and
`cloud/` (private nested repo — its architecture lives there).