Mermaid Diagramming
Create professional software diagrams using Mermaid's text-based syntax. Mermaid renders diagrams from simple text definitions, making diagrams version-controllable, easy to update, and maintainable alongside code.
Core Syntax Structure
All Mermaid diagrams follow this pattern:
diagramType
definition content
Key principles:
- First line declares diagram type (e.g.,
classDiagram, sequenceDiagram, flowchart)
- Use
%% for comments
- Line breaks and indentation improve readability but aren't required
- Unknown words break diagrams; parameters fail silently
Diagram Type Selection Guide
Choose the right diagram type:
Class Diagrams - Domain modeling, OOP design, entity relationships
- Domain-driven design documentation
- Object-oriented class structures
- Entity relationships and dependencies
Sequence Diagrams - Temporal interactions, message flows
- API request/response flows
- User authentication flows
- System component interactions
- Method call sequences
Flowcharts - Processes, algorithms, decision trees
- User journeys and workflows
- Business processes
- Algorithm logic
- Deployment pipelines
Entity Relationship Diagrams (ERD) - Database schemas
- Table relationships
- Data modeling
- Schema design
C4 Diagrams - Software architecture at multiple levels
- System Context (systems and users)
- Container (applications, databases, services)
- Component (internal structure)
- Code (class/interface level)
State Diagrams - State machines, lifecycle states
Git Graphs - Version control branching strategies
Gantt Charts - Project timelines, scheduling
Pie/Bar Charts - Data visualization
Quick Start Examples
Class Diagram (Domain Model)
classDiagram
Title -- Genre
Title *-- Season
Title *-- Review
User --> Review : creates
class Title {
+string name
+int releaseYear
+play()
}
class Genre {
+string name
+getTopTitles()
}
Sequence Diagram (API Flow)
sequenceDiagram
participant User
participant API
participant Database
User->>API: POST /login
API->>Database: Query credentials
Database-->>API: Return user data
alt Valid credentials
API-->>User: 200 OK + JWT token
else Invalid credentials
API-->>User: 401 Unauthorized
end
Flowchart (User Journey)
flowchart TD
Start([User visits site]) --> Auth{Authenticated?}
Auth -->|No| Login[Show login page]
Auth -->|Yes| Dashboard[Show dashboard]
Login --> Creds[Enter credentials]
Creds --> Validate{Valid?}
Validate -->|Yes| Dashboard
Validate -->|No| Error[Show error]
Error --> Login
ERD (Database Schema)
erDiagram
USER ||--o{ ORDER : places
ORDER ||--|{ LINE_ITEM : contains
PRODUCT ||--o{ LINE_ITEM : includes
USER {
int id PK
string email UK
string name
datetime created_at
}
ORDER {
int id PK
int user_id FK
decimal total
datetime created_at
}
Detailed References
For in-depth guidance on specific diagram types, see:
- references/class-diagrams.md - Domain modeling, relationships (association, composition, aggregation, inheritance), multiplicity, methods/properties
- references/sequence-diagrams.md - Actors, participants, messages (sync/async), activations, loops, alt/opt/par blocks, notes
- references/flowcharts.md - Node shapes, connections, decision logic, subgraphs, styling
- references/erd-diagrams.md - Entities, relationships, cardinality, keys, attributes
- references/c4-diagrams.md - System context, container, component diagrams, boundaries
- references/architecture-diagrams.md - Cloud services, infrastructure, CI/CD deployments
- references/advanced-features.md - Themes, styling, configuration, layout options
Best Practices
- Start Simple - Begin with core entities/components, add details incrementally
- Use Meaningful Names - Clear labels make diagrams self-documenting
- Comment Extensively - Use
%% comments to explain complex relationships
- Keep Focused - One diagram per concept; split large diagrams into multiple focused views
- Version Control - Store
.mmd files alongside code for easy updates
- Add Context - Include titles and notes to explain diagram purpose
- Iterate - Refine diagrams as understanding evolves
Configuration and Theming
Configure diagrams using frontmatter:
---
config:
theme: base
themeVariables:
primaryColor: "#ff6b6b"
---
flowchart LR
A --> B
Available themes: default, forest, dark, neutral, base
Layout options:
layout: dagre (default) - Classic balanced layout
layout: elk - Advanced layout for complex diagrams (requires integration)
Look options:
look: classic - Traditional Mermaid style
look: handDrawn - Sketch-like appearance
Exporting and Rendering
Native support in:
- GitHub/GitLab - Automatically renders in Markdown
- VS Code - With Markdown Mermaid extension
- Notion, Obsidian, Confluence - Built-in support
Export options:
- Mermaid Live Editor - Online editor with PNG/SVG export
- Mermaid CLI -
npm install -g @mermaid-js/mermaid-cli then mmdc -i input.mmd -o output.png
- Docker -
docker run --rm -v $(pwd):/data minlag/mermaid-cli -i /data/input.mmd -o /data/output.png
Common Pitfalls
- Breaking characters - Avoid
{} in comments, use proper escape sequences for special characters
- Syntax errors - Misspellings break diagrams; validate syntax in Mermaid Live
- Overcomplexity - Split complex diagrams into multiple focused views
- Missing relationships - Document all important connections between entities
When to Create Diagrams
Always diagram when:
- Starting new projects or features
- Documenting complex systems
- Explaining architecture decisions
- Designing database schemas
- Planning refactoring efforts
- Onboarding new team members
Use diagrams to:
- Align stakeholders on technical decisions
- Document domain models collaboratively
- Visualize data flows and system interactions
- Plan before coding
- Create living documentation that evolves with code
1---2name: mermaid-diagrams3description: Mermaid Diagramming4---5# Mermaid Diagramming67Create professional software diagrams using Mermaid's text-based syntax. Mermaid renders diagrams from simple text definitions, making diagrams version-controllable, easy to update, and maintainable alongside code.89## Core Syntax Structure1011All Mermaid diagrams follow this pattern:1213```mermaid14diagramType15 definition content16```1718**Key principles:**19- First line declares diagram type (e.g., `classDiagram`, `sequenceDiagram`, `flowchart`)20- Use `%%` for comments21- Line breaks and indentation improve readability but aren't required22- Unknown words break diagrams; parameters fail silently2324## Diagram Type Selection Guide2526**Choose the right diagram type:**27281. **Class Diagrams** - Domain modeling, OOP design, entity relationships29 - Domain-driven design documentation30 - Object-oriented class structures31 - Entity relationships and dependencies32332. **Sequence Diagrams** - Temporal interactions, message flows34 - API request/response flows35 - User authentication flows36 - System component interactions37 - Method call sequences38393. **Flowcharts** - Processes, algorithms, decision trees40 - User journeys and workflows41 - Business processes42 - Algorithm logic43 - Deployment pipelines44454. **Entity Relationship Diagrams (ERD)** - Database schemas46 - Table relationships47 - Data modeling48 - Schema design49505. **C4 Diagrams** - Software architecture at multiple levels51 - System Context (systems and users)52 - Container (applications, databases, services)53 - Component (internal structure)54 - Code (class/interface level)55566. **State Diagrams** - State machines, lifecycle states577. **Git Graphs** - Version control branching strategies588. **Gantt Charts** - Project timelines, scheduling599. **Pie/Bar Charts** - Data visualization6061## Quick Start Examples6263### Class Diagram (Domain Model)64```mermaid65classDiagram66 Title -- Genre67 Title *-- Season68 Title *-- Review69 User --> Review : creates7071 class Title {72 +string name73 +int releaseYear74 +play()75 }7677 class Genre {78 +string name79 +getTopTitles()80 }81```8283### Sequence Diagram (API Flow)84```mermaid85sequenceDiagram86 participant User87 participant API88 participant Database8990 User->>API: POST /login91 API->>Database: Query credentials92 Database-->>API: Return user data93 alt Valid credentials94 API-->>User: 200 OK + JWT token95 else Invalid credentials96 API-->>User: 401 Unauthorized97 end98```99100### Flowchart (User Journey)101```mermaid102flowchart TD103 Start([User visits site]) --> Auth{Authenticated?}104 Auth -->|No| Login[Show login page]105 Auth -->|Yes| Dashboard[Show dashboard]106 Login --> Creds[Enter credentials]107 Creds --> Validate{Valid?}108 Validate -->|Yes| Dashboard109 Validate -->|No| Error[Show error]110 Error --> Login111```112113### ERD (Database Schema)114```mermaid115erDiagram116 USER ||--o{ ORDER : places117 ORDER ||--|{ LINE_ITEM : contains118 PRODUCT ||--o{ LINE_ITEM : includes119120 USER {121 int id PK122 string email UK123 string name124 datetime created_at125 }126127 ORDER {128 int id PK129 int user_id FK130 decimal total131 datetime created_at132 }133```134135## Detailed References136137For in-depth guidance on specific diagram types, see:138139- **[references/class-diagrams.md](references/class-diagrams.md)** - Domain modeling, relationships (association, composition, aggregation, inheritance), multiplicity, methods/properties140- **[references/sequence-diagrams.md](references/sequence-diagrams.md)** - Actors, participants, messages (sync/async), activations, loops, alt/opt/par blocks, notes141- **[references/flowcharts.md](references/flowcharts.md)** - Node shapes, connections, decision logic, subgraphs, styling142- **[references/erd-diagrams.md](references/erd-diagrams.md)** - Entities, relationships, cardinality, keys, attributes143- **[references/c4-diagrams.md](references/c4-diagrams.md)** - System context, container, component diagrams, boundaries144- **[references/architecture-diagrams.md](references/architecture-diagrams.md)** - Cloud services, infrastructure, CI/CD deployments145- **[references/advanced-features.md](references/advanced-features.md)** - Themes, styling, configuration, layout options146147## Best Practices1481491. **Start Simple** - Begin with core entities/components, add details incrementally1502. **Use Meaningful Names** - Clear labels make diagrams self-documenting1513. **Comment Extensively** - Use `%%` comments to explain complex relationships1524. **Keep Focused** - One diagram per concept; split large diagrams into multiple focused views1535. **Version Control** - Store `.mmd` files alongside code for easy updates1546. **Add Context** - Include titles and notes to explain diagram purpose1557. **Iterate** - Refine diagrams as understanding evolves156157## Configuration and Theming158159Configure diagrams using frontmatter:160161```mermaid162---163config:164 theme: base165 themeVariables:166 primaryColor: "#ff6b6b"167---168flowchart LR169 A --> B170```171172**Available themes:** default, forest, dark, neutral, base173174**Layout options:**175- `layout: dagre` (default) - Classic balanced layout176- `layout: elk` - Advanced layout for complex diagrams (requires integration)177178**Look options:**179- `look: classic` - Traditional Mermaid style180- `look: handDrawn` - Sketch-like appearance181182## Exporting and Rendering183184**Native support in:**185- GitHub/GitLab - Automatically renders in Markdown186- VS Code - With Markdown Mermaid extension187- Notion, Obsidian, Confluence - Built-in support188189**Export options:**190- [Mermaid Live Editor](https://mermaid.live) - Online editor with PNG/SVG export191- Mermaid CLI - `npm install -g @mermaid-js/mermaid-cli` then `mmdc -i input.mmd -o output.png`192- Docker - `docker run --rm -v $(pwd):/data minlag/mermaid-cli -i /data/input.mmd -o /data/output.png`193194## Common Pitfalls195196- **Breaking characters** - Avoid `{}` in comments, use proper escape sequences for special characters197- **Syntax errors** - Misspellings break diagrams; validate syntax in Mermaid Live198- **Overcomplexity** - Split complex diagrams into multiple focused views199- **Missing relationships** - Document all important connections between entities200201## When to Create Diagrams202203**Always diagram when:**204- Starting new projects or features205- Documenting complex systems206- Explaining architecture decisions207- Designing database schemas208- Planning refactoring efforts209- Onboarding new team members210211**Use diagrams to:**212- Align stakeholders on technical decisions213- Document domain models collaboratively214- Visualize data flows and system interactions215- Plan before coding216- Create living documentation that evolves with code