O schema do seu banco,
vivo no git.

Seu schema já vive num arquivo .dbml no git. O Gabbro transforma esse repo num estúdio: diagrama ER interativo, docs navegáveis, diff estrutural entre branches e histórico commit a commit. Local-first: sem banco próprio, sem conta, sem build.

Windows · instalador .exe · última versão direto do GitHub Releases
Demo ao vivo
Gabbro orchestra-database VisualizarEditar
DiagramaDocs master +1 tabela~1 coluna−1 coluna
empresa
PKidint8
razao_socialvarchar
cnpjvarchar
produto
PKidint8
FKempresa_idint8
descricaovarchar
pedido
PKidint8
FKempresa_idint8
FKproduto_idint8
totalnumeric
obstext
pagamento
PKidint8
FKpedido_idint8
valornumeric
master
develop
Histórico
add tabela pagamento; pedido: +total, −obs
a1f0c72 · você · agora
produto: FK empresa_id → empresa
7d3e9b0 · você · há 2 dias
schema inicial: empresa, pedido, produto
0c48a15 · você · há 5 dias
database.dbml
+ Table pagamento { + id int8 [pk] + pedido_id int8 [ref: > pedido.id] + valor numeric + } Table pedido { + total numeric - obs text }
diff master → develop

Diagrama, branch, diff e histórico — como no app.

Por que existe

O schema já é código. Faltava um estúdio à altura.

O schema do banco vive no git como um arquivo .dbml — a fonte da verdade. Mas ler DBML cru, comparar duas branches ou entender o que mudou entre dois commits é trabalhoso. Ferramentas de diagrama vivem soltas do repo e desatualizam.

O Gabbro liga as duas pontas: abre o repo de dados e mostra o schema como diagrama, docs e diff — sempre em sincronia com o git, porque é o git. Cada edição é um commit com o seu autor; push e pull usam a credencial que o seu git já tem. Sem stack de autenticação, sem banco próprio, uma dependência só.

É local-first: cada pessoa roda no próprio clone. O histórico compartilhado é simplesmente o remoto git.

Schema como código

O .dbml no git é a fonte da verdade. Toda mudança de schema é um commit, com autor e mensagem.

Branches são ambientes

master espelha produção, develop o banco de dev. Compare as duas visualmente.

Multi-usuário sem servidor

Cada dev roda no seu clone. O histórico com autor por pessoa é o próprio remoto git — nada pra hospedar.

Recursos

Quatro abas sobre o mesmo arquivo de texto

Diagrama, docs, diff e histórico — tudo derivado do seu .dbml. Cada recurso com uma amostra do que você vê no app.

Aba Diagrama

Um diagrama ER que você navega, não só olha

Pan e zoom, arrastar tabelas, grupos coloridos por módulo e arestas de FK com roteamento ortogonal. Passe o mouse numa tabela e as relações dela acendem. O layout vive no positions.json, fora do schema.

orchestra-database · diagrama
empresa
idint8
cnpjvarchar
pedido
idint8
empresa_idint8
totalnumeric
Aba Docs

Documentação navegável, gerada do schema

Índice por grupo de tabelas, busca e uma seção por tabela com tipos de coluna e badges PK / FK / NN / UQ. As relações "References" e "Referenced by" são clicáveis — você segue o schema como se fossem links.

docs · pedido
pedido
idint8PK
empresa_idint8FK
totalnumericNN
Referenced by · pagamento.pedido_id
Diff entre branches

Compare dois ambientes, tabela por tabela

Escolha base → target e veja o que mudou no diagrama e nas docs: tabelas e colunas adicionadas, modificadas e removidas (fantasma vermelho). É o "o que a develop tem que a master ainda não" na sua frente.

diff estrutural
master develop
+ Table pagamento { … } Table pedido { ~ total int → numeric - obs text }
addalteradoremovido
Aba Histórico

Cada commit vira um diff estrutural

Os commits que tocaram o schema, com autor, data e mensagem. Clique num commit e o Gabbro renderiza o diff vs o commit pai — no diagrama e nas docs. O Save ainda sugere a mensagem de commit a partir do resumo do diff.

histórico · database.dbml
a1f0c72 add tabela pagamento; pedido: +total · você · agora
+ Table pagamento { + pedido_id int8 [ref: > pedido.id] + } - obs text
Modos View & Edit

Leitura tranquila, edição quando precisa

View é somente leitura pro dia a dia. Edit abre o editor de DBML e libera salvar posições — a barra fica verde pra deixar o estado claro. Salvar commita na hora e pusha em background; sem identidade git configurada, o app vira leitor puro e explica o git config que resolve.

modo
VisualizarEditar
Editando na branch develop. O commit cai na branch ativa do clone — o app nunca faz checkout. As outras branches ficam somente leitura.
Layout fora do schema

Mover tabela não polui o diff do schema

As posições das tabelas vivem no positions.json, separado do DBML. Reorganizou o diagrama? O diff do schema continua limpo. Tem um seed a partir de um ERD do StarUML pra herdar o layout que a equipe já conhece.

repo de dados
database.dbml — schema (diff limpo) positions.json — layout (X/Y)
Grupos por módulo, cores herdadas do diagrama StarUML.

E ainda vem com

Sync com auto-cura

pull --rebase --autostash e push que se recupera de non-fast-forward. Falhas voltam classificadas com o fix sugerido.

Modo hosted opcional

O mesmo código roda como serviço central: clona um repo https, commita como identidade de serviço e escreve só na branch de edição.

Seed do StarUML

Extrai as coordenadas de um ERD .mdj pro positions.json — o diagrama que vivia no StarUML mantém o layout.

Auto-update

Novas versões chegam do GitHub e instalam sem assistente. Você escolhe reiniciar agora ou depois.

Sem build, 1 dependência

Node 24, uma dependência só (express). Sem banco próprio, sem build step, sem stack de auth.

Local-first & seguro

Escuta só em 127.0.0.1, com guarda anti DNS-rebinding e anti-CSRF. Roda no seu Windows ou no navegador.

Git-native

A identidade é a sua. O app nunca guarda token.

No modo local não existe campo de senha, token nem conta. Commits usam o user.name / user.email do clone; push e pull usam o credential helper ou a chave SSH do sistema, igual ao git no terminal. Se o seu git consegue pushar, o Gabbro consegue.

  • Credencial do sistema
    Nenhum token digitado no app. Atribuição e controle de acesso são os do git/provedor.
  • Edição na branch ativa
    O commit cai na branch checked-out; as demais são somente leitura (git show). O app nunca faz checkout.
  • Sem lock-in
    O DBML é formato aberto e documentado. Nenhum app, e nenhuma empresa, fica dono do seu schema.
Open source

Código aberto de verdade, sob licença MIT

O Gabbro nasceu de uma coceira pessoal — ver o schema do banco como ele merece — e fica melhor com mais mãos. Stack pequena, sem build, issues à mão. Traga uma ideia, um parser melhor ou um fix.

Comece pelas issues

Pegue uma good first issue ou abra a sua. Melhoria de layout, de docs ou de parser DBML, tudo conta.

Stack sem susto

Server Express, front sem framework nem build, Electron no desktop. Node 24 e uma dependência. Clonou, rodou.

DBML aberto

O formato é do dbml.dbdiagram.io. Some um tipo, um decorator, um caso de borda no parser.

Ver issues abertas Dar uma estrela

PRs, ideias e bug reports são bem-vindos.

A história e o nome

A rocha que cristaliza devagar

O gabro é a rocha ígnea que se forma no fundo, esfriando bem devagar. Esse tempo deixa os cristais crescerem grandes e visíveis a olho nu — cada mineral com sua forma, encaixados numa estrutura legível. É a imagem exata de um bom schema: entidades bem definidas, relações claras, nada escondido.

E, como a rocha, o Gabbro é escuro por natureza e sólido: tema dark de ponta a ponta e dados que são só seus, no seu git. Primo do basalto — mesma lava, só que a que teve tempo de virar cristal.

Instalar

Comece em minutos

Baixe o app, ou rode do código apontando pro seu clone do repo de dados.

1

Baixe ou clone

Pegue o instalador .exe pra Windows, ou clone o repo pra rodar do código.

git clone …/gabbro.git cd gabbro && npm install
2

Aponte o clone-DBML

Passe um clone git existente (com .git/) do seu repo de dados.

node bin/gabbro.js \ /caminho/clone-dbml
3

Abra o estúdio

Sobe em 127.0.0.1:8080 e abre o browser. Diagrama, docs, diff e histórico do schema.

Baixar para Windows

App não assinado. O Windows pode mostrar o SmartScreen no 1º uso: Mais informações → Executar assim mesmo.

Sem identidade git na máquina? O Gabbro vira leitor puro e mostra o git config que libera a edição.