Template · Free

Architecture Diagram Set

A four-diagram starter set based on the C4 approach, plus the conventions that make diagrams readable — including the one that matters most, saying what each arrow means.

No sign-up. No email. Markdown with Mermaid — edit it in anything.

When to use it

Before build, and updated whenever a structural decision changes.

Who fills it in

Solution architect or tech lead.

Works alongside: BRD · Security Checklist

The template

Instruction lines are marked with > — delete them once the document is filled in.

System: _______________ Version: 0.1 Date: _______________ Owner: _______________

Four diagrams at decreasing zoom. Most teams need the first two; draw the third only for components with real internal structure. Diagrams below use Mermaid — renders in most Markdown tools, and it is text, so it diffs in version control instead of rotting as a stale image.


Conventions — agree these first#

Every arrow must say what it means. An unlabelled arrow is the single most common defect in architecture diagrams: nobody knows whether it means "calls", "sends data to", "depends on", or "sometimes reads from". Label direction and protocol.

ConventionRule
Arrow directionPoints the way the request travels, not the data
Arrow labelVerb + protocol, e.g. "reads via HTTPS/JSON"
BoxesOne responsibility each; if you cannot name it in three words, split it
ColourNever the only carrier of meaning — some readers cannot see it
Trust boundariesDrawn explicitly; this is where security review focuses
Anything externalVisually distinct from what you control

1. Context — who uses this and what it talks to#

One page. The diagram you show a stakeholder. No internal detail.

graph TD
    U[Customer] -->|uses via browser| S[Your System]
    A[Internal Staff] -->|administers| S
    S -->|reads/writes via HTTPS| P[Payment Provider]
    S -->|sends email via SMTP| E[Email Service]
    S -->|queries via JDBC| D[(Core Database)]

Actors:

ActorTypeWhat they do
Person / System

2. Containers — the deployable parts#

Applications, services, databases, stores. What runs where, and how the parts communicate. This is the diagram engineers use most.

graph TD
    subgraph "Trust boundary: our infrastructure"
        W[Web Application<br/>static HTML/CSS/JS]
        A[API<br/>PHP 8.3]
        DB[(Database<br/>MySQL)]
        Q[Job Runner<br/>cron]
    end
    U[Browser] -->|HTTPS| W
    W -->|HTTPS/JSON| A
    A -->|SQL over local socket| DB
    Q -->|SQL| DB
    A -->|HTTPS| X[External API]
ContainerTechnologyResponsibilityScalingData held

3. Components — inside one container#

Only for containers with genuine internal structure. Skip otherwise.

graph LR
    R[Router] --> C[Controller]
    C --> S[Service Layer]
    S --> Rp[Repository]
    Rp --> DB[(Database)]
    S --> Ext[External Client]

4. Deployment — where it physically runs#

graph TD
    subgraph "Host: production VPS"
        N[nginx :443]
        F[php-fpm pool]
        M[(MySQL :3306 localhost only)]
    end
    I[Internet] -->|TLS 1.3| N
    N --> F
    F --> M
EnvironmentHostSizingNotes
Production
Test

Data flow and classification#

What moves where, and how sensitive it is. This drives security decisions.

DataClassificationFromToProtection
Public / Internal / Confidential / Personal

Trust boundaries#

BoundaryWhat crosses itControl
Internet → applicationTLS, authentication, rate limit
Application → databaseNetwork isolation, least-privilege account
Application → third party

Key decisions#

Record the decision AND what you rejected. Six months later, the rejected options are the valuable part — they stop someone re-litigating a settled question, or repeating a mistake.

#DecisionAlternatives rejectedWhyDate
1

Known constraints and debt#

ItemImpactPlan