Mermaid no Markdown: guia prático com exemplos¶
O Mermaid é uma linguagem de diagrama baseada em texto. Em vez de desenhar caixas manualmente, você escreve código e o diagrama é renderizado automaticamente.
Por que usar Mermaid?¶
- Diagramas versionáveis no Git.
- Revisão em pull request como qualquer código.
- Fácil de manter e atualizar.
- Ótimo para documentação técnica em Markdown.
Estrutura básica¶
Para criar um diagrama, use um bloco de código com mermaid:
```mermaid
graph TD
A[Início] --> B[Processamento]
B --> C[Fim]
> `graph TD` significa um grafo de cima para baixo (**Top Down**).
---
## 1) Flowchart (fluxograma)
### Exemplo simples
```mermaid
graph TD
A[Usuário acessa aplicação] --> B{Autenticado?}
B -->|Sim| C[Carrega dashboard]
B -->|Não| D[Redireciona para login]
D --> E[Preenche credenciais]
E --> B
Direções úteis¶
TD/TB: Top Down (cima para baixo)LR: Left to Right (esquerda para direita)RL: Right to LeftBT: Bottom to Top
Formatos de nós¶
graph LR
A[Retângulo] --> B(Retângulo arredondado)
B --> C{Decisão}
C --> D[(Banco de dados)]
C --> E>Assimétrico]
2) Sequence Diagram (sequência)¶
Útil para mostrar troca de mensagens entre serviços.
sequenceDiagram
participant U as Usuário
participant FE as Frontend
participant API as API
participant DB as Banco
U->>FE: Acessa /pedidos
FE->>API: GET /pedidos
API->>DB: SELECT * FROM pedidos
DB-->>API: Lista de pedidos
API-->>FE: 200 OK + JSON
FE-->>U: Renderiza lista
3) Class Diagram (classes)¶
Bom para modelagem de domínio e orientação a objetos.
classDiagram
class Usuario {
+String nome
+String email
+login()
}
class Pedido {
+UUID id
+Decimal valorTotal
+fechar()
}
class ItemPedido {
+String sku
+int quantidade
}
Usuario "1" --> "*" Pedido : cria
Pedido "1" --> "*" ItemPedido : contém
4) State Diagram (máquina de estados)¶
Excelente para ciclos de vida (pedido, ticket, deploy etc.).
stateDiagram-v2
[*] --> Criado
Criado --> Pago: pagamento aprovado
Criado --> Cancelado: timeout
Pago --> Enviado: separação concluída
Enviado --> Entregue: confirmação
Cancelado --> [*]
Entregue --> [*]
5) ER Diagram (entidade-relacionamento)¶
Para representar entidades e relacionamentos de banco de dados.
erDiagram
CLIENTE ||--o{ PEDIDO : realiza
PEDIDO ||--|{ ITEM_PEDIDO : possui
PRODUTO ||--o{ ITEM_PEDIDO : compoe
CLIENTE {
int id PK
string nome
string email
}
PEDIDO {
int id PK
date criado_em
string status
}
ITEM_PEDIDO {
int id PK
int quantidade
decimal preco_unitario
}
PRODUTO {
int id PK
string nome
decimal preco
}
6) Gantt Chart (cronograma)¶
Ótimo para planejamento de projetos.
gantt
title Roadmap - Plataforma X
dateFormat YYYY-MM-DD
section Planejamento
Discovery :done, p1, 2026-01-01, 7d
Arquitetura :done, p2, after p1, 5d
section Implementação
Backend MVP :active,p3, 2026-01-15, 14d
Frontend MVP : p4, after p3, 10d
section Entrega
Testes integrados : p5, after p4, 7d
Go-live :milestone, m1, after p5, 1d
7) Journey Diagram (jornada)¶
Bom para experiência do usuário e processos.
journey
title Jornada de compra
section Descoberta
Vê anúncio: 4: Usuário
Entra no site: 5: Usuário
section Avaliação
Compara produtos: 3: Usuário
Lê avaliações: 4: Usuário
section Conversão
Finaliza compra: 5: Usuário
Recebe confirmação: 5: Usuário
8) Pie Chart (distribuição)¶
pie title Distribuição de incidentes por tipo
"Aplicação" : 42
"Infra" : 28
"Banco de dados" : 18
"Rede" : 12
9) Mindmap (mapa mental)¶
mindmap
root((Plano de estudos DevOps))
Linux
Shell
Redes
Permissões
Cloud
AWS
Kubernetes
Observability
Prometheus
Grafana
OpenTelemetry
10) Git Graph (histórico de branches)¶
gitGraph
commit id: "init"
branch feature/mermaid
checkout feature/mermaid
commit id: "nota mermaid"
checkout main
commit id: "hotfix"
merge feature/mermaid
commit id: "release"
Dicas de escrita¶
- Prefira nomes curtos nos nós.
- Divida diagramas grandes em partes menores.
- Use
subgraphem flowchart para agrupar contextos. - Mantenha estilo consistente (setas, idioma, nomenclatura).
Exemplo com subgraph:
graph LR
subgraph Cliente
A[Browser]
end
subgraph Backend
B[API]
C[Worker]
end
subgraph Dados
D[(PostgreSQL)]
E[(Redis)]
end
A --> B
B --> D
B --> E
B --> C
Erros comuns¶
- Esquecer o fence de linguagem: deve ser
```mermaid. - Misturar sintaxe de tipos diferentes no mesmo bloco.
- Usar caracteres especiais sem testar (aspas e
:em labels). - Diagramas muito densos sem quebra por contexto.
Atalho rápido (cola)¶
graph TD
A[Evento] --> B{Condição}
B -->|OK| C[Ação 1]
B -->|Falha| D[Ação 2]
C --> E[Fim]
D --> E
Se quiser, duplique este arquivo como template e adapte os exemplos para cada tema do seu estudo.