DO
Architecture Documentation
Documentation core v1.0.0
Architecture Documentation
Overview
Architecture documentation captures the structural decisions, component relationships, data flows, and deployment topology of a software system. It uses standardized diagram notations (C4 Model, Mermaid) and written narratives to communicate the “big picture” to developers, architects, and stakeholders. In the full-lifecycle pipeline, @documentation-writer generates architecture docs in Phase 12 from the system design artifacts produced by @architect in Phase 3.
Key Concepts
C4 Model Levels
| Level | Name | Audience | Shows |
|---|---|---|---|
| L1 | System Context | Everyone | System + external actors/systems |
| L2 | Container | Architects + Devs | Applications, databases, message brokers |
| L3 | Component | Developers | Classes/modules within a container |
| L4 | Code | Developers | Class diagrams (usually auto-generated) |
Architecture Document Structure
docs/architecture/
├── overview.md → System context + key decisions
├── containers.md → Service boundaries + interactions
├── data-architecture.md → Data stores, schemas, flows
├── infrastructure.md → Cloud topology, networking
├── security-architecture.md → Auth, encryption, compliance
├── diagrams/
│ ├── system-context.mmd → L1 Mermaid diagram
│ ├── container.mmd → L2 Mermaid diagram
│ └── sequence/
│ ├── order-flow.mmd
│ └── auth-flow.mmd
└── adr/ → Architecture Decision Records
├── template.md
├── 001-microservices.md
└── 002-event-driven.md
Best Practices
- Start with C4 Level 1 — System context diagram is the most valuable single diagram
- Use Mermaid for diagrams — Renders in GitHub, versioned with code, no external tools
- Document decisions, not just structure — ADRs explain why the architecture is this way
- Keep diagrams current — Stale diagrams are worse than no diagrams
- Show data flows — Sequence diagrams for critical workflows
- Include NFR mapping — Show how architecture addresses scalability, security, reliability
- Layered documentation — Don’t show everything in one diagram; use C4 levels
- Link to implementation — Reference actual service repos, API specs, deployment configs
Code Examples
✅ Good: System Context Diagram (Mermaid)
graph TB
subgraph "External Systems"
PaymentGW["Payment Gateway<br/>(Stripe)"]
EmailSvc["Email Service<br/>(SendGrid)"]
IDV["Identity Verification<br/>(Jumio)"]
end
subgraph "Users"
Customer["Customer<br/>(Web/Mobile)"]
Agent["Support Agent<br/>(Internal)"]
Admin["Administrator<br/>(Internal)"]
end
subgraph "KYC Platform"
System["KYC Platform<br/>(Spring Boot + React)"]
end
Customer -->|"Submit KYC application"| System
Agent -->|"Review applications"| System
Admin -->|"Configure rules"| System
System -->|"Process payments"| PaymentGW
System -->|"Send notifications"| EmailSvc
System -->|"Verify identity"| IDV
✅ Good: Container Diagram (Mermaid)
graph TB
subgraph "KYC Platform"
UI["React SPA<br/>(TypeScript)"]
API["API Gateway<br/>(Spring Cloud Gateway)"]
UserSvc["User Service<br/>(Spring Boot)"]
KYCSvc["KYC Service<br/>(Spring Boot)"]
NotifSvc["Notification Service<br/>(Spring Boot)"]
UserDB[("User DB<br/>(PostgreSQL)")]
KYCDB[("KYC DB<br/>(PostgreSQL)")]
Cache[("Cache<br/>(Redis)")]
MQ["Message Broker<br/>(Kafka)"]
end
UI --> API
API --> UserSvc
API --> KYCSvc
UserSvc --> UserDB
UserSvc --> Cache
KYCSvc --> KYCDB
KYCSvc -->|"publish events"| MQ
MQ -->|"consume events"| NotifSvc
✅ Good: Sequence Diagram for Critical Flow
sequenceDiagram
participant C as Customer
participant UI as React UI
participant API as API Gateway
participant KYC as KYC Service
participant DB as PostgreSQL
participant K as Kafka
participant N as Notification Service
C->>UI: Submit KYC Application
UI->>API: POST /api/v1/kyc/applications
API->>KYC: Forward request
KYC->>DB: INSERT application (status=PENDING)
KYC->>K: Publish KYC_SUBMITTED event
KYC-->>API: 201 Created
API-->>UI: Application ID
UI-->>C: "Application submitted"
K->>N: Consume KYC_SUBMITTED
N->>C: Send confirmation email
❌ Bad: Architecture Anti-Patterns
## Architecture
We use microservices.
See the code for details.
(No diagrams, no decisions, no structure)
Anti-Patterns
- No diagrams — Text-only architecture descriptions are hard to follow
- One giant diagram — Shows everything; conveys nothing (use C4 levels)
- Diagrams in binary tools — Visio/Lucidchart files can’t be version-controlled
- Missing data flows — Static structure without showing how data moves
- No ADRs — Architecture decisions undocumented; context lost when people leave
- Over-documentation — 50-page architecture doc nobody reads (keep it scannable)
Testing Strategies
- Diagram rendering — CI validates Mermaid diagrams render without errors
- Consistency checks — Service names in diagrams match actual repo/service names
- Link validation — All references to repos, APIs, docs are valid links
- Review cadence — Architecture review quarterly; update docs if drift detected