architecture-diagrams-library
Diagramas de arquitetura como código: revisáveis em PR, com diff, sem screenshot que apodrece.
git clone https://github.com/fernando-moretes/ref-architecture-diagrams-library.gitOuvir guia
gerado ao ouvirGerado apenas no primeiro play
Com tecnologia Amazon Polly + OmniVoice
Um catálogo de diagramas de arquitetura escritos como código — AWS, C4, BPMN, event-driven, sequência e estado — com fonte versionada, revisão em pull request e um site Next.js que os publica em diagrams.moretes.com.
Por que diagrama vira código
O problema que este repositório resolve não é desenhar — é manter o desenho verdadeiro depois que a arquitetura muda. Um diagrama que existe só como PNG exportado de uma ferramenta visual perde a fonte na primeira troca de máquina, não tem diff e ninguém revisa. Seis meses depois, o documento de arquitetura mostra três filas SQS onde já existem cinco e um Lambda que foi aposentado.
Eu apliquei ao diagrama a mesma disciplina que se aplica a infraestrutura: fonte em texto, num repositório, com pull request. Um .mmd do Mermaid ou um .puml do PlantUML cabe num code review, mostra linha a linha o que mudou e pode ser renderizado pelo pipeline de documentação sem intervenção humana. Quando alguém troca EventBridge por SNS/SQS num ADR, a mudança no diagrama aparece no mesmo PR que a mudança na decisão.
O que o repositório é: um catálogo curado dessas fontes, organizado por tipo (referência AWS, camadas do C4, processo BPMN, topologia event-driven, sequência, estado), mais um frontend em Next.js 16 que renderiza e publica tudo. O que ele não é: uma ferramenta nova de diagramação. Os renderizadores são os de sempre — Mermaid, PlantUML e a biblioteca diagrams em Python — o valor está na curadoria e no fluxo de revisão.
O que está no catálogo
diagrams (Python), para quem precisa dos ícones oficiais dos serviços.Do arquivo-fonte ao diagrama publicado
O fluxo é o de qualquer código: PR, CI, deploy. O diagrama só existe publicado porque passou pela revisão.
- Mermaid · .mmd — C4, sequência, estado
- PlantUML · .puml — sequência, estado
- diagrams (Python) · AWS com ícones oficiais
- CI · lint + validação das fontes
- Security · scan de dependências
- Frontend · build Next.js 16
- Catálogo Next.js · App Router + React 19
- DNS · diagrams.moretes.com
Como o repositório funciona
Há duas metades com responsabilidades separadas. As fontes: arquivos de texto em três linguagens de diagrama. Mermaid cobre a maioria — C4 com a sintaxe C4Context/C4Container, sequência, estado e fluxogramas para event-driven — porque renderiza no próprio GitHub e em quase todo gerador de documentação sem plugin. PlantUML entra onde o Mermaid fica curto, principalmente sequências longas com grupos e notas. A biblioteca diagrams em Python fica reservada para arquiteturas AWS onde o ícone oficial do serviço facilita a leitura por quem não é engenheiro.
O frontend: uma aplicação Next.js 16 (App Router, React 19, TypeScript 5, Tailwind CSS 4) em frontend/ que lê as fontes, renderiza e publica o catálogo. Roda na Vercel; o DNS de diagrams.moretes.com é gerenciado no Cloudflare.
A esteira: quatro workflows no GitHub Actions — CI, Frontend, Vercel e Security. O CI valida as fontes no PR; o Security varre dependências; o Frontend constrói o site; o deploy segue para a Vercel. O detalhe que importa: a validação acontece antes do merge, então um .mmd com sintaxe quebrada não chega a main — ele quebra no PR, onde alguém está olhando. Isso é a diferença entre um catálogo que se mantém e uma pasta de arquivos que ninguém confia.
Os documentos operacionais estão no próprio repositório: docs/architecture.md para o desenho do sistema, SETUP.md para o ambiente, OPERATIONS.md para o dia a dia e CONTRIBUTING.md para quem quer adicionar um diagrama.
Instalar e usar
- 1
Clone o repositório
git clone https://github.com/fernando-moretes/ref-architecture-diagrams-library.git. Use a URL nova da orgfernando-moretes; os badges do README ainda apontam parafernandofatech, e o GitHub redireciona, mas redirecionamento não é lugar para depender em automação. - 2
Instale o frontend
cd frontend && npm install. Exige Node 20 ou superior — Next.js 16 não constrói em versões anteriores. OSETUP.mdlista o que mais o ambiente precisa. - 3
Rode o catálogo local
npm run devsobe o site emhttp://localhost:3000. Navegue por tipo de diagrama e abra qualquer item para ver a fonte ao lado da renderização. - 4
Copie o snippet para o seu ADR
Cada diagrama é um bloco de texto. Cole o Mermaid dentro de um fence ``
mermaid no Markdown do ADR e o GitHub renderiza na hora, sem build. PlantUML ediagrams` precisam do renderizador correspondente na sua esteira de docs. - 5
Adicione ou corrija um diagrama por PR
Siga o
CONTRIBUTING.md: um arquivo-fonte por diagrama, no diretório da categoria. O CI valida a sintaxe no PR; um diagrama quebrado não passa. Não edite o PNG — ele não existe como fonte de verdade aqui.
# 1. Clone (URL nova da org)
git clone https://github.com/fernando-moretes/ref-architecture-diagrams-library.git
cd ref-architecture-diagrams-library
# 2. Frontend do catálogo (Next.js 16 — Node >= 20)
cd frontend
npm install
npm run dev # http://localhost:3000
# 3. Renderizar uma fonte fora do site, se precisar do arquivo
# Mermaid -> SVG
npx -y @mermaid-js/mermaid-cli -i ../path/to/diagram.mmd -o diagram.svg
# PlantUML -> PNG (precisa de Java + plantuml.jar no PATH ou via Docker)
plantuml ../path/to/diagram.puml
# diagrams (Python) -> PNG (precisa de Graphviz instalado)
pip install diagrams
python ../path/to/aws_reference.pyO renderizador Python tem uma dependência fora do pip
A biblioteca diagrams chama o Graphviz por baixo. pip install diagrams termina com sucesso e o python arquivo.py falha com ExecutableNotFound: dot — a mensagem aparece só na primeira execução, não na instalação. Instale o Graphviz pelo gerenciador do sistema (brew install graphviz, apt install graphviz) antes de tentar renderizar as arquiteturas AWS.
Como eu uso isto no trabalho de arquitetura
O caso mais comum não é abrir o site — é abrir um ADR. Quando escrevo uma decisão sobre, digamos, orquestração com Step Functions contra coreografia com EventBridge, cada opção ganha um diagrama de sequência ou de topologia colado do catálogo e ajustado com os nomes reais do domínio. O revisor vê a opção A e a opção B lado a lado, no mesmo Markdown, com o mesmo estilo. Sem isso, cada arquiteto desenha na ferramenta que tem à mão e o comitê de arquitetura gasta os primeiros dez minutos decifrando legenda.
C4 em camadas, não de uma vez: o erro que mais vejo é um único diagrama tentando ser Context e Component ao mesmo tempo. O catálogo separa as quatro camadas em arquivos distintos justamente para que o Context caiba numa tela e o Component possa ser detalhado sem poluir o que o stakeholder de negócio precisa ver.
BPMN ao lado do técnico: quando o processo de negócio e a topologia de eventos vivem no mesmo repositório, a divergência entre eles vira um diff. Um passo de aprovação que existe no BPMN e não tem evento correspondente na topologia é um bug de desenho detectável em revisão — antes de virar um bug de produção às 2h da manhã.
O custo que este repositório reduz não é o de desenhar o primeiro diagrama — é o de manter cinquenta diagramas verdadeiros ao longo de anos, com times que mudam.
Perguntas frequentes
Preciso rodar o frontend para usar os diagramas?
Não. As fontes são arquivos de texto no repositório; você pode clonar, copiar o .mmd ou .puml e colar no seu documento sem instalar nada do Next.js. O site é a vitrine navegável, não um pré-requisito.
Por que três linguagens de diagrama em vez de uma?
Porque nenhuma cobre tudo bem. Mermaid renderiza nativamente no GitHub e é a escolha padrão. PlantUML lida melhor com sequências longas e agrupamentos. diagrams em Python é a única das três com os ícones oficiais da AWS, o que muda a leitura para audiência não técnica. Use Mermaid quando puder, as outras duas quando precisar.
Posso usar os diagramas em material da minha empresa?
Sim — a licença é MIT. Copie, adapte, mude os nomes. O que a licença não faz é garantir que o diagrama descreve a sua arquitetura: ele é ponto de partida, e a revisão com quem opera o sistema continua sendo sua.
Referências
Para quem é
Use este repositório quando você escreve ADRs ou RFCs com frequência, quando o time revisa arquitetura em pull request e quando os diagramas do seu wiki já divergiram do que roda em produção pelo menos uma vez. Ele vale menos se o seu fluxo de documentação não passa por Git — a revisão em PR é o mecanismo inteiro, não um detalhe. Comece pelo Mermaid, cole o primeiro snippet no próximo ADR e só instale Graphviz e Java quando um stakeholder pedir o ícone oficial ou uma sequência que o Mermaid não desenha.
Deep dives de arquitetura, AWS, IA e mercado — direto no seu email. Grátis.
Sem spam · cancele quando quiser