- Updated Mermaid diagrams in the deployment and development guides for better visual representation and consistency. - Improved formatting and clarity in the Kubernetes local deployment and IAM migration guides, including detailed workflows and troubleshooting sections. - Enhanced the Vietnamese documentation to align with the English version, ensuring consistency across guides. - Added quick tips and common issues sections to facilitate user navigation and understanding.
662 lines
18 KiB
Markdown
662 lines
18 KiB
Markdown
# Mermaid Diagram Guide
|
|
|
|
## Overview
|
|
|
|
This guide helps you choose the right Mermaid diagram type for your documentation and provides examples for common use cases.
|
|
|
|
## Quick Reference
|
|
|
|
| Diagram Type | Use For | Complexity |
|
|
|----------------------|------------------------|---------------------------|
|
|
| **Flowchart** | Workflows, decision trees | |
|
|
| **Sequence Diagram** | API interactions, request flows | |
|
|
| **Class Diagram** | Code structure, patterns | |
|
|
| **Graph** | System architecture, dependencies | |
|
|
| **ER Diagram** | Database schema | |
|
|
| **Gantt** | Timeline, project schedule | |
|
|
| **C4 Diagram** | System context, containers | |
|
|
|
|
---
|
|
|
|
## 1. Flowcharts
|
|
|
|
### When to Use
|
|
|
|
Use flowcharts for:
|
|
- Step-by-step guides and workflows (e.g., **"Onboarding process"**)
|
|
- Decision trees and conditional logic (e.g., **"Discount calculation"**)
|
|
- Process flows with multiple branches (e.g., **"Order fulfillment"**)
|
|
- Troubleshooting procedures (e.g., **"Login issue diagnosis"**)
|
|
|
|
### Basic Flowchart
|
|
|
|
```mermaid
|
|
flowchart TD
|
|
Start([Start]) --> Input[Get Input]
|
|
Input --> Check{Valid?}
|
|
Check -->|Yes| Process[Process Data]
|
|
Check -->|No| Error[Show Error]
|
|
Process --> Output[Return Result]
|
|
Output --> End([End])
|
|
Error --> End
|
|
|
|
style Start fill:#2C3E50,stroke:#34495E,stroke-width:2px,color:#ECF0F1
|
|
style End fill:#27AE60,stroke:#229954,stroke-width:2px,color:#ECF0F1
|
|
style Check fill:#F39C12,stroke:#D68910,stroke-width:2px,color:#ECF0F1
|
|
style Error fill:#C0392B,stroke:#A93226,stroke-width:2px,color:#ECF0F1
|
|
style Process fill:#2980B9,stroke:#1F618D,stroke-width:2px,color:#ECF0F1
|
|
style Input fill:#34495E,stroke:#2C3E50,stroke-width:2px,color:#ECF0F1
|
|
style Output fill:#34495E,stroke:#2C3E50,stroke-width:2px,color:#ECF0F1
|
|
```
|
|
|
|
**Explanation**: A basic flowchart starting with an input, followed by a validation check. If valid, it proceeds to processing and returns a result; otherwise, it shows an error and ends.
|
|
|
|
**Code**:
|
|
````markdown
|
|
```mermaid
|
|
flowchart TD
|
|
Start([Start]) --> Input[Get Input]
|
|
Input --> Check{Valid?}
|
|
Check -->|Yes| Process[Process Data]
|
|
Check -->|No| Error[Show Error]
|
|
Process --> Output[Return Result]
|
|
Output --> End([End])
|
|
Error --> End
|
|
|
|
style Start fill:#2C3E50,stroke:#34495E,stroke-width:2px,color:#ECF0F1
|
|
style End fill:#27AE60,stroke:#229954,stroke-width:2px,color:#ECF0F1
|
|
style Check fill:#F39C12,stroke:#D68910,stroke-width:2px,color:#ECF0F1
|
|
style Error fill:#C0392B,stroke:#A93226,stroke-width:2px,color:#ECF0F1
|
|
```
|
|
````
|
|
|
|
### Advanced Flowchart with Subgraphs
|
|
|
|
```mermaid
|
|
flowchart LR
|
|
A[Client Request] --> B{Auth?}
|
|
B -->|No| C[401 Unauthorized]
|
|
B -->|Yes| D[Process]
|
|
|
|
subgraph Processing["Request Processing"]
|
|
D --> E[Validate Input]
|
|
E --> F[Execute Logic]
|
|
F --> G[Format Response]
|
|
end
|
|
|
|
G --> H[Return 200 OK]
|
|
C --> I[End]
|
|
H --> I
|
|
|
|
style Processing fill:#34495E,stroke:#2C3E50,stroke-width:2px,color:#ECF0F1
|
|
style A fill:#2980B9,stroke:#1F618D,stroke-width:2px,color:#ECF0F1
|
|
style B fill:#F39C12,stroke:#D68910,stroke-width:2px,color:#ECF0F1
|
|
style C fill:#C0392B,stroke:#A93226,stroke-width:2px,color:#ECF0F1
|
|
style D fill:#2980B9,stroke:#1F618D,stroke-width:2px,color:#ECF0F1
|
|
style E fill:#2980B9,stroke:#1F618D,stroke-width:2px,color:#ECF0F1
|
|
style F fill:#2980B9,stroke:#1F618D,stroke-width:2px,color:#ECF0F1
|
|
style G fill:#2980B9,stroke:#1F618D,stroke-width:2px,color:#ECF0F1
|
|
style H fill:#27AE60,stroke:#229954,stroke-width:2px,color:#ECF0F1
|
|
style I fill:#2C3E50,stroke:#34495E,stroke-width:2px,color:#ECF0F1
|
|
```
|
|
|
|
**Explanation**: A flowchart featuring an authorization check and a dedicated **Subgraph** for detailed request processing steps.
|
|
|
|
---
|
|
|
|
## 2. Sequence Diagrams
|
|
|
|
### When to Use
|
|
|
|
Use sequence diagrams for:
|
|
- API communication flows (e.g., **"New order creation API"**)
|
|
- Authentication/authorization flows (e.g., **"OAuth2 login flow"**)
|
|
- Service-to-service interactions (e.g., **"Microservices sync/async calls"**)
|
|
- Request/response cycles (e.g., **"Checkout process"**)
|
|
|
|
### Basic Sequence Diagram
|
|
|
|
```mermaid
|
|
sequenceDiagram
|
|
participant Client
|
|
participant API
|
|
participant Service
|
|
participant DB
|
|
|
|
Client->>API: POST /login
|
|
API->>Service: authenticate(credentials)
|
|
Service->>DB: findUser(email)
|
|
DB-->>Service: user
|
|
Service->>Service: verifyPassword()
|
|
Service-->>API: JWT token
|
|
API-->>Client: 200 OK {token}
|
|
```
|
|
|
|
**Explanation**: A login sequence illustrating the interaction between the Client, API, Service Layer, and Database, including password verification.
|
|
|
|
**Code**:
|
|
````markdown
|
|
```mermaid
|
|
sequenceDiagram
|
|
participant Client
|
|
participant API
|
|
participant Service
|
|
participant DB
|
|
|
|
Client->>API: POST /login
|
|
API->>Service: authenticate(credentials)
|
|
Service->>DB: findUser(email)
|
|
DB-->>Service: user
|
|
Service->>Service: verifyPassword()
|
|
Service-->>API: JWT token
|
|
API-->>Client: 200 OK {token}
|
|
```
|
|
````
|
|
|
|
### Advanced with Alt/Opt/Loop
|
|
|
|
```mermaid
|
|
sequenceDiagram
|
|
participant Client
|
|
participant API
|
|
participant Cache
|
|
participant DB
|
|
|
|
Client->>API: GET /users/:id
|
|
API->>Cache: get(key)
|
|
|
|
alt Cache Hit
|
|
Cache-->>API: cached data
|
|
API-->>Client: 200 OK (from cache)
|
|
else Cache Miss
|
|
Cache-->>API: null
|
|
API->>DB: SELECT * FROM users
|
|
DB-->>API: user data
|
|
API->>Cache: set(key, data, ttl)
|
|
API-->>Client: 200 OK (from DB)
|
|
end
|
|
```
|
|
|
|
**Explanation**: A data retrieval sequence using **Alt/Else** blocks to handle both Cache Hit and Cache Miss scenarios.
|
|
|
|
---
|
|
|
|
## 3. Class Diagrams
|
|
|
|
### When to Use
|
|
|
|
Use class diagrams for:
|
|
- Design patterns and code structure (e.g., **"Singleton Pattern for Logger"**)
|
|
- Object-oriented architecture (e.g., **"Domain-Driven Design (DDD) models"**)
|
|
- Inheritance and relationships (e.g., **"Repository base and concrete classes"**)
|
|
- Module dependencies (e.g., **"Service layer dependencies"**)
|
|
|
|
### Basic Class Diagram
|
|
|
|
```mermaid
|
|
classDiagram
|
|
class BaseRepository {
|
|
#prisma: PrismaClient
|
|
#modelName: string
|
|
+findById(id: string) T
|
|
+findAll(options: QueryOptions) T[]
|
|
+create(data: CreateDto) T
|
|
+update(id: string, data: UpdateDto) T
|
|
+delete(id: string) void
|
|
}
|
|
|
|
class UserRepository {
|
|
+findByEmail(email: string) User
|
|
+findByUsername(username: string) User
|
|
}
|
|
|
|
class FeatureRepository {
|
|
+findByName(name: string) Feature
|
|
+toggleStatus(id: string) Feature
|
|
}
|
|
|
|
BaseRepository <|-- UserRepository
|
|
BaseRepository <|-- FeatureRepository
|
|
```
|
|
|
|
**Explanation**: A class diagram showing inheritance relationships between a generic `BaseRepository` and specific repository implementations.
|
|
|
|
---
|
|
|
|
## 4. Graph Diagrams
|
|
|
|
### When to Use
|
|
|
|
Use graph diagrams for:
|
|
- System architecture overview (e.g., **"Microservices Architecture"**)
|
|
- Component relationships (e.g., **"Service-to-database mapping"**)
|
|
- Data flow diagrams (e.g., **"Request processing pipeline"**)
|
|
- Dependency graphs (e.g., **"Package to package dependencies"**)
|
|
|
|
### System Architecture
|
|
|
|
```mermaid
|
|
graph TD
|
|
Client[Web Client] --> Gateway[Traefik Gateway]
|
|
Gateway --> Auth[Auth Service]
|
|
Gateway --> IAM[IAM Service]
|
|
Gateway --> User[User Service]
|
|
|
|
Auth --> DB[(PostgreSQL)]
|
|
IAM --> DB
|
|
User --> DB
|
|
|
|
User --> Cache[(Redis Cache)]
|
|
|
|
style Client fill:#34495E,stroke:#2C3E50,stroke-width:2px,color:#ECF0F1
|
|
style Gateway fill:#2980B9,stroke:#1F618D,stroke-width:2px,color:#ECF0F1
|
|
style Auth fill:#8E44AD,stroke:#7D3C98,stroke-width:2px,color:#ECF0F1
|
|
style IAM fill:#8E44AD,stroke:#7D3C98,stroke-width:2px,color:#ECF0F1
|
|
style User fill:#8E44AD,stroke:#7D3C98,stroke-width:2px,color:#ECF0F1
|
|
style DB fill:#F39C12,stroke:#D68910,stroke-width:2px,color:#ECF0F1
|
|
style Cache fill:#E67E22,stroke:#CA6F1E,stroke-width:2px,color:#ECF0F1
|
|
```
|
|
|
|
**Explanation**: A high-level view of the system architecture showing how the Gateway routes requests to different services, all connected to a shared Database and Cache.
|
|
|
|
### Data Flow
|
|
|
|
```mermaid
|
|
graph LR
|
|
Input[User Input] --> Validation[Zod Validation]
|
|
Validation --> Controller[Controller]
|
|
Controller --> Service[Service Layer]
|
|
Service --> Repository[Repository]
|
|
Repository --> Prisma[Prisma ORM]
|
|
Prisma --> DB[(Database)]
|
|
|
|
Service --> Cache[(Redis Cache)]
|
|
|
|
style Input fill:#34495E,stroke:#2C3E50,stroke-width:2px,color:#ECF0F1
|
|
style Validation fill:#27AE60,stroke:#229954,stroke-width:2px,color:#ECF0F1
|
|
style Controller fill:#2980B9,stroke:#1F618D,stroke-width:2px,color:#ECF0F1
|
|
style Service fill:#2980B9,stroke:#1F618D,stroke-width:2px,color:#ECF0F1
|
|
style Repository fill:#2980B9,stroke:#1F618D,stroke-width:2px,color:#ECF0F1
|
|
style Prisma fill:#8E44AD,stroke:#7D3C98,stroke-width:2px,color:#ECF0F1
|
|
style DB fill:#F39C12,stroke:#D68910,stroke-width:2px,color:#ECF0F1
|
|
style Cache fill:#E67E22,stroke:#CA6F1E,stroke-width:2px,color:#ECF0F1
|
|
```
|
|
|
|
**Explanation**: A detailed data flow showing Input going through Validation -> Controller -> Service -> Repository -> ORM -> DB, while also interacting with the Cache.
|
|
|
|
---
|
|
|
|
## 5. ER Diagrams
|
|
|
|
### When to Use
|
|
|
|
Use ER diagrams for:
|
|
- Database schema documentation (e.g., **"User and IAM tables"**)
|
|
- Entity relationships (e.g., **"One-to-many between User and Sessions"**)
|
|
- Data modeling (e.g., **"Designing new feature entities"**)
|
|
- Prisma schema visualization (e.g., **"Mapping code entities to DB tables"**)
|
|
|
|
### Database Schema
|
|
|
|
```mermaid
|
|
erDiagram
|
|
User ||--o{ Session : has
|
|
User ||--o{ RefreshToken : has
|
|
User ||--o{ UserRole : has
|
|
Role ||--o{ UserRole : has
|
|
Role ||--o{ RolePermission : has
|
|
Permission ||--o{ RolePermission : has
|
|
|
|
User {
|
|
string id PK
|
|
string email UK
|
|
string passwordHash
|
|
boolean mfaEnabled
|
|
datetime createdAt
|
|
datetime updatedAt
|
|
}
|
|
|
|
Session {
|
|
string id PK
|
|
string userId FK
|
|
string token UK
|
|
string deviceId
|
|
string ipAddress
|
|
datetime expiresAt
|
|
}
|
|
|
|
Role {
|
|
string id PK
|
|
string name UK
|
|
string description
|
|
datetime createdAt
|
|
}
|
|
|
|
Permission {
|
|
string id PK
|
|
string code UK
|
|
string resource
|
|
string action
|
|
string scope
|
|
}
|
|
```
|
|
|
|
**Explanation**: An Entity-Relationship diagram illustrating a typical IAM schema with Users, Sessions, Roles, and Permissions.
|
|
|
|
---
|
|
|
|
## 6. Gantt Charts
|
|
|
|
### When to Use
|
|
|
|
Use Gantt charts for:
|
|
- Project timelines
|
|
- Implementation phases
|
|
- Migration schedules
|
|
- Deployment plans
|
|
|
|
### Project Timeline
|
|
|
|
```mermaid
|
|
gantt
|
|
title Documentation Update Project Timeline
|
|
dateFormat YYYY-MM-DD
|
|
section Phase 1
|
|
Analysis & Research :done, p1, 2024-01-01, 1d
|
|
section Phase 2
|
|
Templates & Strategy :active, p2, 2024-01-02, 0.5d
|
|
section Phase 3
|
|
High Priority Docs :p3, 2024-01-03, 2d
|
|
section Phase 4
|
|
Remaining Docs :p4, 2024-01-05, 3d
|
|
section Phase 5
|
|
QA & Verification :p5, 2024-01-08, 1d
|
|
```
|
|
|
|
---
|
|
|
|
## 7. C4 Diagrams
|
|
|
|
### When to Use
|
|
|
|
Use C4 diagrams for:
|
|
- System context (highest level)
|
|
- Container diagrams (services, databases)
|
|
- Component diagrams (modules within services)
|
|
- Code diagrams (classes, functions)
|
|
|
|
### System Context
|
|
|
|
```mermaid
|
|
C4Context
|
|
title System Context Diagram for IAM System
|
|
|
|
Person(user, "User", "System user needing authentication")
|
|
Person(admin, "Admin", "System administrator")
|
|
|
|
System(iam, "IAM System", "Identity and Access Management")
|
|
|
|
System_Ext(email, "Email Service", "SendGrid/AWS SES")
|
|
System_Ext(oauth, "OAuth Providers", "Google, Facebook, GitHub")
|
|
|
|
Rel(user, iam, "Authenticates with", "HTTPS")
|
|
Rel(admin, iam, "Manages users and permissions", "HTTPS")
|
|
Rel(iam, email, "Sends emails", "SMTP/API")
|
|
Rel(iam, oauth, "OAuth login", "OAuth 2.0")
|
|
```
|
|
|
|
---
|
|
|
|
## Color Palette Reference
|
|
|
|
### Dark Theme Color System
|
|
|
|
Our diagrams use a consistent dark color palette based on professional design principles:
|
|
|
|
```mermaid
|
|
graph LR
|
|
subgraph Primary[" Primary Colors"]
|
|
A1["Dark Blue<br/>#2980B9"]
|
|
A2["Purple<br/>#8E44AD"]
|
|
A3["Green<br/>#27AE60"]
|
|
end
|
|
|
|
subgraph Secondary[" Secondary Colors"]
|
|
B1["Orange<br/>#E67E22"]
|
|
B2["Yellow<br/>#F39C12"]
|
|
B3["Red<br/>#C0392B"]
|
|
end
|
|
|
|
subgraph Neutrals[" Neutral Colors"]
|
|
C1["Dark Gray<br/>#2C3E50"]
|
|
C2["Medium Gray<br/>#34495E"]
|
|
C3["Light Text<br/>#ECF0F1"]
|
|
end
|
|
|
|
style A1 fill:#2980B9,stroke:#1F618D,stroke-width:3px,color:#ECF0F1
|
|
style A2 fill:#8E44AD,stroke:#7D3C98,stroke-width:3px,color:#ECF0F1
|
|
style A3 fill:#27AE60,stroke:#229954,stroke-width:3px,color:#ECF0F1
|
|
|
|
style B1 fill:#E67E22,stroke:#CA6F1E,stroke-width:3px,color:#ECF0F1
|
|
style B2 fill:#F39C12,stroke:#D68910,stroke-width:3px,color:#ECF0F1
|
|
style B3 fill:#C0392B,stroke:#A93226,stroke-width:3px,color:#ECF0F1
|
|
|
|
style C1 fill:#2C3E50,stroke:#1C2833,stroke-width:3px,color:#ECF0F1
|
|
style C2 fill:#34495E,stroke:#2C3E50,stroke-width:3px,color:#ECF0F1
|
|
style C3 fill:#ECF0F1,stroke:#BDC3C7,stroke-width:3px,color:#2C3E50
|
|
```
|
|
|
|
### Color Usage Guidelines
|
|
|
|
| Color | Hex Code | Use For | Example |
|
|
|-------|----------|---------|---------|
|
|
| **Dark Blue** | `#2980B9` | Services, Processing, APIs | User Service, API Gateway |
|
|
| **Purple** | `#8E44AD` | Core Components, ORM | Prisma, IAM Service |
|
|
| **Green** | `#27AE60` | Success, Validation, End States | Success Flow, Validated Data |
|
|
| **Orange** | `#E67E22` | Cache, Warning States | Redis Cache, Warnings |
|
|
| **Yellow** | `#F39C12` | Database, Important Decisions | PostgreSQL, Decision Nodes |
|
|
| **Red** | `#C0392B` | Errors, Failures, Alerts | Error States, Failed Operations |
|
|
| **Dark Gray** | `#2C3E50` | Start/End, Neutral Elements | Start Node, End Node |
|
|
| **Medium Gray** | `#34495E` | Subgraphs, Background | Processing Groups, Containers |
|
|
| **Light Text** | `#ECF0F1` | Text Color (always use) | All node text |
|
|
|
|
### Standard Style Pattern
|
|
|
|
Always include these three properties for professional appearance:
|
|
|
|
```markdown
|
|
style NodeName fill:#HexColor,stroke:#DarkerShade,stroke-width:2px,color:#ECF0F1
|
|
```
|
|
|
|
**Components:**
|
|
- `fill`: Main background color
|
|
- `stroke`: Border color (typically darker shade of fill)
|
|
- `stroke-width`: Border thickness (use `2px` for standard, `3px` for emphasis)
|
|
- `color`: Text color (always use `#ECF0F1` for dark backgrounds)
|
|
|
|
### Node Type Color Patterns
|
|
|
|
| Node Type | Fill Color | Stroke Color | Use Case |
|
|
|-----------|------------|--------------|----------|
|
|
| **Services** | `#2980B9` | `#1F618D` | Auth Service, User Service |
|
|
| **API/Gateway** | `#2980B9` | `#1F618D` | Traefik, API Gateway |
|
|
| **Database** | `#F39C12` | `#D68910` | PostgreSQL, MySQL |
|
|
| **Cache** | `#E67E22` | `#CA6F1E` | Redis, Memcached |
|
|
| **ORM/Framework** | `#8E44AD` | `#7D3C98` | Prisma, TypeORM |
|
|
| **Success/End** | `#27AE60` | `#229954` | Success Flow, Completion |
|
|
| **Error/Failure** | `#C0392B` | `#A93226` | Error States, Failures |
|
|
| **Decision** | `#F39C12` | `#D68910` | Validation, Conditionals |
|
|
| **Start** | `#2C3E50` | `#1C2833` | Entry Point |
|
|
| **Process** | `#34495E` | `#2C3E50` | General Processing |
|
|
|
|
### Quick Color Selection Guide
|
|
|
|
**Choose colors based on node function:**
|
|
|
|
**Blue (`#2980B9`)** → Services, APIs, Controllers
|
|
**Purple (`#8E44AD`)** → Core Systems, ORM, Frameworks
|
|
**Green (`#27AE60`)** → Success, Validation, Completion
|
|
**Orange (`#E67E22`)** → Cache, Memory, Storage
|
|
**Yellow (`#F39C12`)** → Databases, Decisions, Important Actions
|
|
**Red (`#C0392B`)** → Errors, Failures, Critical Issues
|
|
**Dark Gray (`#2C3E50`)** → Start/End, Neutral States
|
|
**Medium Gray (`#34495E`)** → Containers, Subgraphs, Groups
|
|
|
|
---
|
|
|
|
## Best Practices
|
|
|
|
### Guidelines
|
|
|
|
1. **Keep it Simple**: Don't overcomplicate diagrams
|
|
2. **Use Consistent Styling**: Apply color scheme consistently
|
|
3. **Add Legends**: Explain symbols and colors when needed
|
|
4. **Limit Complexity**: Break into multiple diagrams if too complex
|
|
5. **Test Rendering**: Always test diagrams render correctly
|
|
6. **Dark Theme**: Always use dark color palette for professional appearance
|
|
7. **Text Contrast**: Always use `color:#ECF0F1` for text on dark backgrounds
|
|
|
|
---
|
|
|
|
## Common Pitfalls
|
|
|
|
### Too Complex
|
|
|
|
```mermaid
|
|
graph TD
|
|
A --> B
|
|
A --> C
|
|
B --> D
|
|
B --> E
|
|
C --> F
|
|
C --> G
|
|
D --> H
|
|
E --> H
|
|
F --> I
|
|
G --> I
|
|
H --> J
|
|
I --> J
|
|
```
|
|
|
|
### Simplified with Subgraphs
|
|
|
|
```mermaid
|
|
graph TD
|
|
A[Start] --> B[Process A]
|
|
B --> C[Process B]
|
|
|
|
subgraph Detailed["Detailed Processing"]
|
|
C --> D[Step 1]
|
|
D --> E[Step 2]
|
|
end
|
|
|
|
E --> F[End]
|
|
|
|
style Detailed fill:#34495E,stroke:#2C3E50,stroke-width:2px,color:#ECF0F1
|
|
style A fill:#2C3E50,stroke:#1C2833,stroke-width:2px,color:#ECF0F1
|
|
style F fill:#27AE60,stroke:#229954,stroke-width:2px,color:#ECF0F1
|
|
style B fill:#2980B9,stroke:#1F618D,stroke-width:2px,color:#ECF0F1
|
|
style C fill:#2980B9,stroke:#1F618D,stroke-width:2px,color:#ECF0F1
|
|
style D fill:#2980B9,stroke:#1F618D,stroke-width:2px,color:#ECF0F1
|
|
style E fill:#2980B9,stroke:#1F618D,stroke-width:2px,color:#ECF0F1
|
|
```
|
|
|
|
---
|
|
|
|
## Testing Diagrams
|
|
|
|
Always test your diagrams before committing:
|
|
|
|
```bash
|
|
# Install mermaid-cli
|
|
npm install -g @mermaid-js/mermaid-cli
|
|
|
|
# Test render (SVG)
|
|
mmdc -i your-doc.md -o test-output.svg
|
|
|
|
# Render high-quality PNG with dark theme
|
|
mmdc -i your-doc.md -o test-output.png -b black -t dark -s 3
|
|
|
|
# Render ALL diagrams in a markdown file
|
|
mmdc -i your-doc.md
|
|
|
|
# Parameter Explanations:
|
|
# -i: Input file (.md or .mmd)
|
|
# -o: Output file (format based on extension .svg, .png, .pdf)
|
|
# -b: Background color (hex code or color names like black, white, transparent)
|
|
# -t: Theme (default, forest, dark, neutral)
|
|
# -s: Scale (increase resolution, e.g., 3 for sharper images)
|
|
```
|
|
|
|
---
|
|
|
|
## Quick Tips
|
|
|
|
### Mermaid Common Issues
|
|
|
|
**Issue**: Diagram not rendering
|
|
- Check for syntax errors (missing arrows, brackets)
|
|
- Ensure proper indentation in subgraphs
|
|
- Validate special characters are escaped
|
|
|
|
**Issue**: Colors not applying
|
|
- Place style commands after all node definitions
|
|
- Use exact node IDs in style statements
|
|
- Ensure hex colors include `#` prefix
|
|
|
|
**Issue**: Text overlapping
|
|
- Use shorter labels or `<br/>` for line breaks
|
|
- Adjust diagram direction (TD, LR, RL, BT)
|
|
- Increase spacing between nodes
|
|
|
|
### Color Pattern Quick Reference
|
|
|
|
```markdown
|
|
// Services & APIs
|
|
style Node fill:#2980B9,stroke:#1F618D,stroke-width:2px,color:#ECF0F1
|
|
|
|
// Database
|
|
style Node fill:#F39C12,stroke:#D68910,stroke-width:2px,color:#ECF0F1
|
|
|
|
// Cache
|
|
style Node fill:#E67E22,stroke:#CA6F1E,stroke-width:2px,color:#ECF0F1
|
|
|
|
// Success/End
|
|
style Node fill:#27AE60,stroke:#229954,stroke-width:2px,color:#ECF0F1
|
|
|
|
// Error/Failure
|
|
style Node fill:#C0392B,stroke:#A93226,stroke-width:2px,color:#ECF0F1
|
|
|
|
// Decision Points
|
|
style Node fill:#F39C12,stroke:#D68910,stroke-width:2px,color:#ECF0F1
|
|
|
|
// Start/Neutral
|
|
style Node fill:#2C3E50,stroke:#1C2833,stroke-width:2px,color:#ECF0F1
|
|
```
|
|
|
|
### Visual Indicators
|
|
|
|
Use emojis to enhance diagram readability:
|
|
- Services & APIs
|
|
- Core Systems
|
|
- Success Paths
|
|
- Databases
|
|
- Cache/Storage
|
|
- Errors
|
|
- Neutral/Start/End
|
|
- Warnings
|
|
- Validated
|
|
- Failed
|
|
|
|
---
|
|
|
|
## Resources
|
|
|
|
- [Mermaid Official Documentation](https://mermaid.js.org/) - Complete reference
|
|
- [Mermaid Live Editor](https://mermaid.live/) - Test diagrams online
|
|
- [Mermaid CheatSheet](https://jojozhuang.github.io/tutorial/mermaid-cheat-sheet/) - Quick reference
|
|
|
|
---
|
|
|
|
**Last Updated**: 2026-01-08
|