Diagramação com Mermaid
Crie diagramas de software profissionais usando a sintaxe baseada em texto do Mermaid. O Mermaid renderiza diagramas a partir de definições simples em texto, tornando os diagramas controláveis por versão, fáceis de atualizar e mantíveis junto ao código.
Estrutura de Sintaxe Base
Todos os diagramas Mermaid seguem este padrão:
diagramType
definition content
Princípios-chave:
- Primeira linha declara tipo de diagrama (ex:
classDiagram, sequenceDiagram, flowchart)
- Use
%% para comentários
- Quebras de linha e indentação melhoram a legibilidade, mas não são obrigatórias
- Palavras desconhecidas quebram diagramas; parâmetros falham silenciosamente
Guia de Seleção de Tipo de Diagrama
Escolha o tipo de diagrama correto:
Diagramas de Classe - Modelagem de domínio, design OOP, relacionamentos de entidades
- Documentação de design dirigido por domínio
- Estruturas de classe orientadas a objetos
- Relacionamentos e dependências de entidades
Diagramas de Sequência - Interações temporais, fluxos de mensagens
- Fluxos de requisição/resposta de API
- Fluxos de autenticação de usuário
- Interações de componentes do sistema
- Sequências de chamadas de método
Fluxogramas - Processos, algoritmos, árvores de decisão
- Jornadas de usuário e workflows
- Processos de negócio
- Lógica de algoritmos
- Pipelines de deployment
Diagramas de Relacionamento de Entidades (ERD) - Esquemas de banco de dados
- Relacionamentos de tabelas
- Modelagem de dados
- Design de esquema
Diagramas C4 - Arquitetura de software em múltiplos níveis
- Contexto do Sistema (sistemas e usuários)
- Container (aplicações, bancos de dados, serviços)
- Componente (estrutura interna)
- Código (nível de classe/interface)
Diagramas de Estado - Máquinas de estado, estados de ciclo de vida
Git Graphs - Estratégias de branching do controle de versão
Gráficos de Gantt - Cronogramas de projeto, agendamento
Gráficos de Pizza/Barras - Visualização de dados
Exemplos de Início Rápido
Diagrama de Classe (Modelo de Domínio)
classDiagram
Title -- Genre
Title *-- Season
Title *-- Review
User --> Review : creates
class Title {
+string name
+int releaseYear
+play()
}
class Genre {
+string name
+getTopTitles()
}
Diagrama de Sequência (Fluxo de API)
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
Fluxograma (Jornada do Usuário)
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 (Esquema de Banco de Dados)
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
}
Referências Detalhadas
Para orientação aprofundada sobre tipos de diagrama específicos, consulte:
- references/class-diagrams.md - Modelagem de domínio, relacionamentos (associação, composição, agregação, herança), multiplicidade, métodos/propriedades
- references/sequence-diagrams.md - Atores, participantes, mensagens (síncronas/assíncronas), ativações, loops, blocos alt/opt/par, notas
- references/flowcharts.md - Formas de nó, conexões, lógica de decisão, subgráficos, estilização
- references/erd-diagrams.md - Entidades, relacionamentos, cardinalidade, chaves, atributos
- references/c4-diagrams.md - Contexto do sistema, container, diagramas de componentes, limites
- references/advanced-features.md - Temas, estilização, configuração, opções de layout
Melhores Práticas
- Comece Simples - Inicie com entidades/componentes principais, adicione detalhes incrementalmente
- Use Nomes Significativos - Rótulos claros tornam diagramas autodocumentados
- Comente Extensivamente - Use comentários
%% para explicar relacionamentos complexos
- Mantenha Foco - Um diagrama por conceito; divida diagramas grandes em múltiplas visualizações focadas
- Controle de Versão - Armazene arquivos
.mmd junto ao código para atualizações fáceis
- Adicione Contexto - Inclua títulos e notas para explicar o propósito do diagrama
- Itere - Refine diagramas conforme o entendimento evolui
Configuração e Temas
Configure diagramas usando frontmatter:
---
config:
theme: base
themeVariables:
primaryColor: "#ff6b6b"
---
flowchart LR
A --> B
Temas disponíveis: default, forest, dark, neutral, base
Opções de layout:
layout: dagre (padrão) - Layout clássico balanceado
layout: elk - Layout avançado para diagramas complexos (requer integração)
Opções de aparência:
look: classic - Estilo Mermaid tradicional
look: handDrawn - Aparência com traço de mão
Exportação e Renderização
Suporte nativo em:
- GitHub/GitLab - Renderiza automaticamente em Markdown
- VS Code - Com extensão Markdown Mermaid
- Notion, Obsidian, Confluence - Suporte integrado
Opções de exportação:
- Mermaid Live Editor - Editor online com exportação PNG/SVG
- Mermaid CLI -
npm install -g @mermaid-js/mermaid-cli depois 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
Armadilhas Comuns
- Caracteres quebrados - Evite
{} em comentários, use sequências de escape adequadas para caracteres especiais
- Erros de sintaxe - Erros de digitação quebram diagramas; valide a sintaxe no Mermaid Live
- Complexidade excessiva - Divida diagramas complexos em múltiplas visualizações focadas
- Relacionamentos ausentes - Documente todas as conexões importantes entre entidades
Quando Criar Diagramas
Sempre diagrame quando:
- Iniciar novos projetos ou features
- Documentar sistemas complexos
- Explicar decisões de arquitetura
- Projetar esquemas de banco de dados
- Planejar esforços de refatoração
- Integrar novos membros da equipe
Use diagramas para:
- Alinhar stakeholders em decisões técnicas
- Documentar modelos de domínio colaborativamente
- Visualizar fluxos de dados e interações do sistema
- Planejar antes de codificar
- Criar documentação viva que evolui com o código
1---2name: mermaid-diagrams3description: Guia completo para criar diagramas de software usando sintaxe Mermaid. Use quando usuários precisarem criar, visualizar ou documentar software por meio de diagramas, incluindo diagramas de classe (modelagem de domínio, design orientado a objetos), diagramas de sequência (fluxos de aplicação, interações de API, execução de código), fluxogramas (processos, algoritmos, jornadas do usuário), diagramas de relacionamento de entidades (esquemas de banco de dados), diagramas de arquitetura C4 (contexto do sistema, containers, componentes), diagramas de estado, git graphs, gráficos de pizza, gráficos de Gantt ou qualquer outro tipo de diagrama. Acionadores incluem solicitações para "diagram", "visualize", "model", "map out", "show the flow" ou ao explicar arquitetura de sistema, design de banco de dados, estrutura de código ou fluxos de usuário/aplicação.4---56# Diagramação com Mermaid78Crie diagramas de software profissionais usando a sintaxe baseada em texto do Mermaid. O Mermaid renderiza diagramas a partir de definições simples em texto, tornando os diagramas controláveis por versão, fáceis de atualizar e mantíveis junto ao código.910## Estrutura de Sintaxe Base1112Todos os diagramas Mermaid seguem este padrão:1314```mermaid15diagramType16 definition content17```1819**Princípios-chave:**20- Primeira linha declara tipo de diagrama (ex: `classDiagram`, `sequenceDiagram`, `flowchart`)21- Use `%%` para comentários22- Quebras de linha e indentação melhoram a legibilidade, mas não são obrigatórias23- Palavras desconhecidas quebram diagramas; parâmetros falham silenciosamente2425## Guia de Seleção de Tipo de Diagrama2627**Escolha o tipo de diagrama correto:**28291. **Diagramas de Classe** - Modelagem de domínio, design OOP, relacionamentos de entidades30 - Documentação de design dirigido por domínio31 - Estruturas de classe orientadas a objetos32 - Relacionamentos e dependências de entidades33342. **Diagramas de Sequência** - Interações temporais, fluxos de mensagens35 - Fluxos de requisição/resposta de API36 - Fluxos de autenticação de usuário37 - Interações de componentes do sistema38 - Sequências de chamadas de método39403. **Fluxogramas** - Processos, algoritmos, árvores de decisão41 - Jornadas de usuário e workflows42 - Processos de negócio43 - Lógica de algoritmos44 - Pipelines de deployment45464. **Diagramas de Relacionamento de Entidades (ERD)** - Esquemas de banco de dados47 - Relacionamentos de tabelas48 - Modelagem de dados49 - Design de esquema50515. **Diagramas C4** - Arquitetura de software em múltiplos níveis52 - Contexto do Sistema (sistemas e usuários)53 - Container (aplicações, bancos de dados, serviços)54 - Componente (estrutura interna)55 - Código (nível de classe/interface)56576. **Diagramas de Estado** - Máquinas de estado, estados de ciclo de vida587. **Git Graphs** - Estratégias de branching do controle de versão598. **Gráficos de Gantt** - Cronogramas de projeto, agendamento609. **Gráficos de Pizza/Barras** - Visualização de dados6162## Exemplos de Início Rápido6364### Diagrama de Classe (Modelo de Domínio)65```mermaid66classDiagram67 Title -- Genre68 Title *-- Season69 Title *-- Review70 User --> Review : creates71 72 class Title {73 +string name74 +int releaseYear75 +play()76 }77 78 class Genre {79 +string name80 +getTopTitles()81 }82```8384### Diagrama de Sequência (Fluxo de API)85```mermaid86sequenceDiagram87 participant User88 participant API89 participant Database90 91 User->>API: POST /login92 API->>Database: Query credentials93 Database-->>API: Return user data94 alt Valid credentials95 API-->>User: 200 OK + JWT token96 else Invalid credentials97 API-->>User: 401 Unauthorized98 end99```100101### Fluxograma (Jornada do Usuário)102```mermaid103flowchart TD104 Start([User visits site]) --> Auth{Authenticated?}105 Auth -->|No| Login[Show login page]106 Auth -->|Yes| Dashboard[Show dashboard]107 Login --> Creds[Enter credentials]108 Creds --> Validate{Valid?}109 Validate -->|Yes| Dashboard110 Validate -->|No| Error[Show error]111 Error --> Login112```113114### ERD (Esquema de Banco de Dados)115```mermaid116erDiagram117 USER ||--o{ ORDER : places118 ORDER ||--|{ LINE_ITEM : contains119 PRODUCT ||--o{ LINE_ITEM : includes120 121 USER {122 int id PK123 string email UK124 string name125 datetime created_at126 }127 128 ORDER {129 int id PK130 int user_id FK131 decimal total132 datetime created_at133 }134```135136## Referências Detalhadas137138Para orientação aprofundada sobre tipos de diagrama específicos, consulte:139140- **[references/class-diagrams.md](references/class-diagrams.md)** - Modelagem de domínio, relacionamentos (associação, composição, agregação, herança), multiplicidade, métodos/propriedades141- **[references/sequence-diagrams.md](references/sequence-diagrams.md)** - Atores, participantes, mensagens (síncronas/assíncronas), ativações, loops, blocos alt/opt/par, notas142- **[references/flowcharts.md](references/flowcharts.md)** - Formas de nó, conexões, lógica de decisão, subgráficos, estilização143- **[references/erd-diagrams.md](references/erd-diagrams.md)** - Entidades, relacionamentos, cardinalidade, chaves, atributos144- **[references/c4-diagrams.md](references/c4-diagrams.md)** - Contexto do sistema, container, diagramas de componentes, limites145- **[references/advanced-features.md](references/advanced-features.md)** - Temas, estilização, configuração, opções de layout146147## Melhores Práticas1481491. **Comece Simples** - Inicie com entidades/componentes principais, adicione detalhes incrementalmente1502. **Use Nomes Significativos** - Rótulos claros tornam diagramas autodocumentados1513. **Comente Extensivamente** - Use comentários `%%` para explicar relacionamentos complexos1524. **Mantenha Foco** - Um diagrama por conceito; divida diagramas grandes em múltiplas visualizações focadas1535. **Controle de Versão** - Armazene arquivos `.mmd` junto ao código para atualizações fáceis1546. **Adicione Contexto** - Inclua títulos e notas para explicar o propósito do diagrama1557. **Itere** - Refine diagramas conforme o entendimento evolui156157## Configuração e Temas158159Configure diagramas usando frontmatter:160161```mermaid162---163config:164 theme: base165 themeVariables:166 primaryColor: "#ff6b6b"167---168flowchart LR169 A --> B170```171172**Temas disponíveis:** default, forest, dark, neutral, base173174**Opções de layout:**175- `layout: dagre` (padrão) - Layout clássico balanceado176- `layout: elk` - Layout avançado para diagramas complexos (requer integração)177178**Opções de aparência:**179- `look: classic` - Estilo Mermaid tradicional180- `look: handDrawn` - Aparência com traço de mão181182## Exportação e Renderização183184**Suporte nativo em:**185- GitHub/GitLab - Renderiza automaticamente em Markdown186- VS Code - Com extensão Markdown Mermaid187- Notion, Obsidian, Confluence - Suporte integrado188189**Opções de exportação:**190- [Mermaid Live Editor](https://mermaid.live) - Editor online com exportação PNG/SVG191- Mermaid CLI - `npm install -g @mermaid-js/mermaid-cli` depois `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## Armadilhas Comuns195196- **Caracteres quebrados** - Evite `{}` em comentários, use sequências de escape adequadas para caracteres especiais197- **Erros de sintaxe** - Erros de digitação quebram diagramas; valide a sintaxe no Mermaid Live198- **Complexidade excessiva** - Divida diagramas complexos em múltiplas visualizações focadas199- **Relacionamentos ausentes** - Documente todas as conexões importantes entre entidades200201## Quando Criar Diagramas202203**Sempre diagrame quando:**204- Iniciar novos projetos ou features205- Documentar sistemas complexos206- Explicar decisões de arquitetura207- Projetar esquemas de banco de dados208- Planejar esforços de refatoração209- Integrar novos membros da equipe210211**Use diagramas para:**212- Alinhar stakeholders em decisões técnicas213- Documentar modelos de domínio colaborativamente214- Visualizar fluxos de dados e interações do sistema215- Planejar antes de codificar216- Criar documentação viva que evolui com o código