Começar
Aparência

Vale na hora e fica lembrada neste navegador.

Arquitetura de stacks da Hibex

Arquitetura de stacks web da Hibex

O modelo com que toda stack web da Hibex Solutions nasce, cresce e é operada. Decide de antemão o que não depende de tecnologia e deixa marcado o que depende, para que cada produto novo comece de onde o anterior chegou, e não do zero.

Repositório: stack-architecture — transversal a todas as plataformas da Hibex; as stacks seguem o nome <plataforma>-stack-<produto>.

Observação:

Estado: rascunho para validação do mantenedor (2026-10-17). Todo documento está como proposta até ser aceito. As decisões que faltam estão em 20 · Questões em aberto.

Em 60 segundos

  • Stack = produto = repositório. Um repositório entrega um produto, com uma ou mais aplicações (cada uma com sua imagem Docker, endereço, client no Keycloak e família de cor).
  • Um modelo zerado com lacunas. Tudo o que vale para qualquer tecnologia já vem decidido (regras, ORGs, estrutura, rotinas). O que depende da tecnologia vem marcado como {{LACUNA:<id>}}, para a stack preencher ao nascer.
  • Nenhum código antes da stack definida. A ficha da stack (linguagem, framework, banco, testes, versões exatas) é preenchida e aceita primeiro. A CI fica vermelha enquanto houver lacuna.
  • A mesma fundação para todas. Seis changes iguais em toda stack (esqueleto, identidade, E2E, observabilidade, aparência, implantação) antes da primeira funcionalidade de produto.
  • Toda mudança por OpenSpec, todo código por TDD. Os testes fim a fim são hierárquicos (agrupamento → cenário → caso), e qualquer caso roda sozinho, com os setups dos níveis acima.
  • Plataforma comum. Docker, Compose, Kamal, Bitwarden Secrets Manager, Keycloak, o contrato de observabilidade, backup testado e o design system da Hibex valem para todas as stacks.
  • O humano publica, o agente prepara. Git, deploy, infraestrutura e segredos são do mantenedor; as regras dos agentes moram no AGENTS.md.

Por que existe

Uma stack construída enquanto as regras são descobertas paga caro pelo que chega tarde:

O que chega tardeCustoNo modelo
Design system adotado depois das telasCusto: uma change de adoção para cada grupo de telasNo modelo: entra na fundação, antes da primeira tela
Roteiro de ponta a ponta em seções que dependem das anterioresCusto: testar uma tela exige rodar todas as anterioresNo modelo: E2E hierárquico, casos independentes
Versões flutuantes na CI (@latest, ubuntu-latest)Custo: build não reproduzívelNo modelo: toda versão é exata, e a CI confere
Um papel único por aplicaçãoCusto: perfil novo exige códigoNo modelo: permissões e perfis desde a fundação
Nome do produto trocado no meio do caminhoCusto: renomear repositório, módulos e realmsNo modelo: visão e nomes antes de qualquer pasta

Este repositório transforma esse aprendizado num modelo, para toda stack começar do ponto em que uma stack madura chega. Como histórico: as regras foram concebidas a partir do estudo de uma primeira stack de produto da Hibex, construída antes deste modelo (19 · Aprendizados).

Escopo

CobreNão cobre
Regras de trabalho com IA, Git, segredos e infraestruturaNão cobre: A infraestrutura compartilhada em si (é do toolbox)
Estrutura de repositório, documentação e decisõesNão cobre: O design system em si (é do enterprise-stack-design)
Ciclo de vida de uma stack, da criação à operaçãoNão cobre: A escolha de linguagem, framework e banco de cada stack
Testes: princípios das três camadas e o modelo de E2ENão cobre: O domínio e as regras de negócio de cada produto
Identidade e acesso, observabilidade, backup, implantaçãoNão cobre: Aplicações sem interface web (por enquanto)
Como uma stack acompanha as versões da arquiteturaNão cobre:

A arquitetura num relance

Toda decisão de uma stack mora numa de três camadas, e a de cima vence: o que falta em cima vira pedido, nunca exceção local.

Três camadas empilhadas: embaixo a plataforma Hibex (toolbox e design system), no meio a arquitetura (regras, ORGs, modelo zerado com lacunas e modelo de E2E) e em cima as stacks, cada uma com ficha, ADRs, specs e código. 3 · cada stackum produto, um repositóriostack-AfichaADRs própriasspecs e changescódigostack-Bstack-Cpreenche as lacunas2 · a arquiteturaeste repositórioregrasinvioláveisORGsdecididas antesmodelo zeradocom lacunasmodelo deE2Ehierárquico1 · a plataformaHibex, para todostoolboxKeycloak · Grafana · VPS · domíniosdesign systembiblioteca · marca · verificadorsustenta
AssuntoFixo em toda stackLacuna (a stack decide ao nascer)
Linguagem e frameworkFixo em toda stack: —Lacuna (a stack decide ao nascer): linguagem, runtime, framework, abordagem de UI
VersõesFixo em toda stack: toda versão exata, nunca latestLacuna (a stack decide ao nascer): os números e onde cada um mora
PersistênciaFixo em toda stack: armazenamentos descartáveis em container; evolução dos dados versionada; um dono; sem banco padrãoLacuna (a stack decide ao nascer): quais armazenamentos e a ferramenta de evolução
TestesFixo em toda stack: TDD; dependências reais em container; E2E hierárquico com PlaywrightLacuna (a stack decide ao nascer): frameworks de unidade e integração
EntregaFixo em toda stack: Docker na entrega, Compose no desenvolvimento, Kamal, Bitwarden SMLacuna (a stack decide ao nascer): imagens base, hosts, prefixos de segredo
IdentidadeFixo em toda stack: Keycloak; realm por população; permissões e perfis; acesso por grupoLacuna (a stack decide ao nascer): realms, clients, permissões, perfis
OperaçãoFixo em toda stack: contrato de observabilidade; backup diário com restauração testadaLacuna (a stack decide ao nascer): bibliotecas e ferramenta de backup
InterfaceFixo em toda stack: design system da Hibex, verificador na CILacuna (a stack decide ao nascer): família de cor de cada aplicação
TrabalhoFixo em toda stack: OpenSpec, ADR, diagramas, pt-BR, AGENTS.mdLacuna (a stack decide ao nascer): —

Visão completa em 01 · Visão geral.

Princípios

  1. Decidir antes de construir: stack definida antes do código; decisão técnica vira ADR; comportamento vira change.
  2. Tudo versionado, nada flutuante: ferramenta, biblioteca, imagem, action e CLI com versão exata.
  3. O humano publica, o agente prepara: Git, deploy, infraestrutura e segredos só pelo mantenedor.
  4. Teste primeiro: nenhum código sem um teste que falhou antes.
  5. Uma mudança por vez, especificada: a change do OpenSpec é a unidade de trabalho.
  6. Tudo reproduzível na máquina: o ambiente local sobe do zero, com um usuário por perfil.
  7. Segurança por padrão: toda área restrita autenticada e autorizada por permissões finas; aplicação pública declarada como tal; nada de segredo em arquivo.
  8. Operável desde o primeiro deploy: telemetria, sonda de vida e backup antes do produto.
  9. A camada de cima vence: plataforma > arquitetura > stack.

Cada regra e como ela é garantida (hook, CI ou revisão): 02 · Princípios e regras.

Ciclo de vida de uma stack

Uma trilha com cinco fases — nascimento, definição, fundação, produto e operação — separadas por quatro portões; da operação, cada nova change volta ao produto. portão 0o agente se achaportão 1nenhuma lacunaportão 2login, telemetria, E2Ee deployportão 31º deploy0Nascimentomodelo copiado1Definiçãolacunas preenchidas2Fundação6 changes fixas3Produtochange a change4Operaçãodeploys e backupcada nova changecada portão tem um critério que se confere — não uma opinião
FaseO que aconteceSai quando
0 · NascimentoO que acontece: o modelo zerado é copiado; regras, ORGs e ADRs pré-escritas no lugarSai quando: o agente lê o AGENTS.md e se reconhece na Fase 1
1 · DefiniçãoO que acontece: visão do produto, aplicações, acesso, tecnologia e versões, sem códigoSai quando: eng/gaps.sh encontra zero lacunas e as ADRs estão aceitas
2 · FundaçãoO que acontece: esqueleto, identidade, E2E, observabilidade, aparência, implantaçãoSai quando: o ambiente sobe do zero, cada perfil entra e a regressão passa
3 · ProdutoO que acontece: uma capability por change, em TDD, com E2ESai quando: primeiro deploy real
4 · OperaçãoO que acontece: deploys, backup, atualizações de design system e de arquiteturaSai quando: —

Detalhe em 04 · Ciclo de vida.

Anatomia de uma stack

O esqueleto que toda stack tem, seja qual for a tecnologia:

Texto
<plataforma>-stack-<produto>/
├── AGENTS.md · CLAUDE.md          regras dos agentes (CLAUDE.md só importa)
├── README.md · ARQUITETURA        porta de entrada · versão da arquitetura de origem
├── docs/
│   ├── ARCHITECTURE.md            a visão técnica viva
│   ├── stack.md                   a ficha da stack: tecnologia e versões
│   ├── produto/                   para quem e para quê
│   ├── decisoes/                  ADR-* da stack · organizacao/ORG-* (cópia, nunca editada)
│   ├── solucoes/ · guias/         detalhes de implementação · passo a passo
│   ├── acesso/<app>.md            permissões e perfis de cada aplicação
│   └── design-system/             famílias, estados, pedidos
├── openspec/                      specs (verdade viva) e changes
├── <módulos e aplicações>         o código (forma decidida na Fase 1)
├── e2e/groups/…                   testes fim a fim hierárquicos
├── deploy/<app>/                  Dockerfile · deploy.yml · .kamal/secrets
├── eng/                           scripts: ambiente local, auth, e2e, backup, verificações
├── vendor/hibex/                  cópia do design system, nunca editada
└── compose.yaml                   ambiente local descartável

As três idades do repositório (recém-nascido, fundação pronta, maduro): 05 · Anatomia.

Mapa de leitura

Comece pela visão geral e aprofunde só no que interessa. Cada documento abre com um desenho que resume o assunto.

Mapa de leitura: comece pelos documentos 01 a 03; siga para o modelo (04 a 07); daí, para como se trabalha (08 a 11, 17 e 18) e para a plataforma (12 a 16); termine em 19 e 20, de onde veio e para onde vai. comece aqui01visão geral02princípios e regras03conceitos e vocabulárioo modelo04ciclo de vida05anatomia do repositório06modelo zerado e lacunas07ORGs e ADRscomo se trabalha08sistema de documentação09mudanças: OpenSpec + TDD10testes11testes fim a fim hierárquicos17agentes de IA18rotinasa plataforma12identidade e acesso13containers, implantação, segredos14observabilidade15backup e restauração16design systemorigem e rumo19aprendizados20questõescada documento abre com um desenho que resume o assuntoleia por último:o que falta decidir

Por onde começar, conforme o seu papel

Você é…Leia primeiro
Mantenedor validando esta visãoLeia primeiro: 01 → 04 → 06 → 11 → 12 → 20
Quem vai criar uma stack novaLeia primeiro: 01 → 04 → 05 → 06 → 07
Quem desenvolve numa stackLeia primeiro: 02 → 09 → 10 → 11 → 18
Quem configura acesso no KeycloakLeia primeiro: 03 → 12
Quem opera (deploy, backup, telemetria)Leia primeiro: 13 → 14 → 15 → 18
Agente de IALeia primeiro: AGENTS.md → 02 → 17 → 09

Todos os documentos

#DocumentoResponde
01Documento: Visão geralResponde: O que é fixo, o que é lacuna, como as peças se ligam
02Documento: Princípios e regrasResponde: As regras invioláveis de toda stack e como cada uma é garantida
03Documento: Conceitos e vocabulárioResponde: Stack, aplicação, módulo, capability, change, lacuna, perfil, permissão…
04Documento: Ciclo de vida de uma stackResponde: Do zero à operação: fases e portões
05Documento: Anatomia do repositórioResponde: Como o repositório é em cada fase
06Documento: Modelo zerado e lacunasResponde: O que vem vazio, a ficha da stack, como preencher
07Documento: ORGs e ADRsResponde: As decisões da organização e as do projeto, com que toda stack já nasce
08Documento: Sistema de documentaçãoResponde: ADR × spec × solução × guia × arquitetura
09Documento: Mudanças: OpenSpec + TDDResponde: Como uma funcionalidade nasce, do pedido ao arquivo
10Documento: TestesResponde: Unidade, integração e fim a fim: o que é de cada stack e o que é comum
11Documento: Testes fim a fim hierárquicosResponde: Agrupamento → cenário → caso, setups em cascata, capturas de tela
12Documento: Identidade e acessoResponde: Keycloak, permissões, perfis, acesso entre aplicações
13Documento: Containers, implantação e segredosResponde: Docker, Compose, Kamal, Bitwarden SM, domínios
14Documento: ObservabilidadeResponde: Logs, métricas, traces e saúde: o contrato de toda aplicação
15Documento: Backup e restauraçãoResponde: Todo dado tem backup, e toda restauração é testada
16Documento: Design systemResponde: Cópia, famílias, verificador, pedidos e atualização
17Documento: Agentes de IAResponde: AGENTS.md, CLAUDE.md, hooks, o que o agente faz e não faz
18Documento: RotinasResponde: O dia a dia: desenvolver, testar, implantar, atualizar
19Documento: Aprendizados da stack-projetosResponde: Histórico: o estudo da primeira stack, que deu origem às regras
20Documento: Questões em aberto e próximos passosResponde: O que o mantenedor precisa decidir para isto virar regra

Como usar este repositório

Quatro situações e o caminho de cada uma: criar uma stack nova, adotar o modelo numa stack existente, mudar uma regra da arquitetura e entender uma decisão. o que você quer?criar uma stack novacopiar o modelo zerado e seguir a Fase 1 (04, 06, 07)adotar numa stack existenteuma change por assunto: AGENTS.md, versões fixas, E2E, perfismudar uma regraproposta aqui, aceite do mantenedor, nova versãoentender uma decisãodocs: 07 ORGs e ADRs e 19 aprendizados
  • Criar uma stack nova: hoje, enquanto o modelo zerado não existe, a referência é 04 + 06 + 07. Depois da validação, eng/new-stack.sh copiará o modelo.
  • Adotar numa stack existente: cada assunto vira uma change do OpenSpec na própria stack, que decide a ordem e o ritmo; este repositório não acompanha quem adota.
  • Mudar uma regra: ver Governança.

Governança: como a arquitetura muda

O ciclo da governança: uma stack aprende ou pede algo; vira proposta aqui; o mantenedor aceita, ajusta ou recusa; sai uma nova versão da arquitetura com o que as stacks precisam fazer; cada stack aplica numa change e volta a aprender. uma stack aprende"falta X", "a regra Y atrapalha"proposta aquidocumento ou ADR, sempre"proposta"o mantenedor decideaceita, ajusta ou recusanova versãoarquitetura-vX.Y.Z +CHANGELOG "Para as stacks"a stack aplicanuma change; arquivoARQUITETURA atualizadoquem decide é o mantenedor
PerguntaResposta
Quem decide?Resposta: O mantenedor. Agentes propõem; nada nasce aceito
Onde se registra?Resposta: Nos documentos daqui e, para decisões com alternativas, em ORGs (as que valem para toda stack, copiadas para cada uma) e em ADRs daqui (as que valem só para este repositório)
Como as stacks ficam sabendo?Resposta: Versões marcadas (arquitetura-vX.Y.Z) com um CHANGELOG.md que diz, para cada versão, o que as stacks precisam fazer ("Para as stacks")
Como uma stack sabe em que versão está?Resposta: Arquivo ARQUITETURA na raiz dela, como o vendor/hibex/VERSAO do design system
Uma stack pode abrir exceção?Resposta: Não. O que falta vira pedido para cá
Qual a compatibilidade?Resposta: Maior: muda uma regra (as stacks precisam agir). Menor: acrescenta sem exigir ação (ORG que as stacks já cumprem, ADR pré-escrita nova, guia, script). Correção: só texto

(Versões, CHANGELOG.md e arquivo ARQUITETURA são propostas desta visão, questão 3 de 20.)

Repositórios relacionados

RepositórioPapelRelação com este
toolboxPapel: Infraestrutura compartilhada: Keycloak, observabilidade, VPS, política de domíniosRelação com este: camada 1: as stacks consomem; este repositório referencia
enterprise-stack-designPapel: Design system: biblioteca, marca, regras, verificadorRelação com este: camada 1: cada stack guarda uma cópia em vendor/hibex/

Estado e roteiro

O roteiro em sete etapas: visão documentada, validação do mantenedor, as ORGs e ADRs daqui e o modelo zerado com os scripts de eng/, o harness do E2E e o eng/new-stack.sh (feitas); agora uma stack piloto; depois a versão 0.1.0 da arquitetura. visão documentadavalidação domantenedorORGs e ADRs daquimodelo zerado + eng/E2E e new-stack.shstack pilotoarquitetura-v0.1.0você está aqui
EtapaEstado
Visão documentada (docs/01–20) e site navegávelEstado: feito (2026-10-17)
Validação do mantenedor (as 15 questões de 20 decididas)Estado: feito (2026-10-18)
ORGs e ADRs deste repositório: 25 ORGs e 5 ADRsEstado: feito (aceitas em 2026-10-18)
Modelo zerado (modelo/, com as lacunas catalogadas)Estado: feito (2026-10-19)
eng/gaps.sh, eng/pinned-versions.sh, hooks e CI do modeloEstado: feito (2026-10-19)
Harness do E2E hierárquico (modelo/e2e/hierarchy/), provado num exemploEstado: feito (2026-10-19)
eng/new-stack.sh: gera uma stack que passa no portão 0Estado: feito (2026-10-19)
Stack piloto, da Fase 0 ao portão 2Estado: agora
arquitetura-v0.1.0 (a v1.0.0 vem depois de usos reais)Estado: —

Estrutura deste repositório

Texto
stack-architecture/
├── README.md                     este documento
├── AGENTS.md · CLAUDE.md         regras para agentes de IA (CLAUDE.md só importa)
├── CHANGELOG.md                  as versões da arquitetura e o "Para as stacks" de cada uma
├── docs/
│   ├── 01…20-*.md                a arquitetura, um assunto por documento
│   ├── decisoes/                 ADRs deste repositório e, em organizacao/, as ORGs de toda stack
│   ├── imagens/desenhos/         os rabiscos (SVG gerado; não se edita à mão)
│   ├── imagens/banner-*.svg      o banner (README) e a capa (site), claro e escuro
│   └── design-system/            a família do site e os pedidos ao design system
├── modelo/                       o modelo zerado: os arquivos com que toda stack nasce, em lacunas
├── exemplos/e2e-atendimento/     o projeto de exemplo que prova o harness do E2E (prove.mjs)
├── eng/new-stack.sh              cria uma stack nova a partir do modelo (Fase 0)
├── eng/tests/                    os testes do new-stack.sh
├── eng/gap-catalog.sh   confere que cada lacuna do modelo está uma vez no catálogo
├── .github/workflows/ci.yml      testes dos scripts e hooks do modelo, catálogo, versões fixas, prova do E2E
├── eng/sketches/                 desenha os rabiscos e o banner (boards/ tem um arquivo por documento)
├── eng/atualizar-design-system.sh  traz a cópia do design system (do mantenedor: faz git clone)
├── vendor/hibex/                 cópia do design system 0.16.1, nunca editada à mão
├── site/                         gerador do site estático, nginx e as instruções de publicar
├── Dockerfile · docker-compose.yml  a imagem do site e o jeito de vê-la localmente
└── config/deploy.yml · .kamal/   o deploy em architecture.enterprise.hibex.net (do mantenedor)

O site

Os mesmos documentos como site estático, no design system da Hibex (família cobalt, três cantos, tema claro e escuro), com os rabiscos embutidos nas páginas. Tudo é gerado no build: o navegador não desenha nada, e o site funciona sem rede. Será publicado em architecture.enterprise.hibex.net, aberto, como o site do design system.

Terminal
docker compose up --build             # a imagem de produção, em http://localhost:8080
node site/gerar.mjs --servir          # sem Docker, a mesma porta (antes: cd site && npm ci)

Pré-requisitos, publicação e como mudar um rabisco: site/README.md.

Convenções de escrita

  • Português brasileiro; identificadores e nomes de ferramenta em inglês; termos técnicos consagrados sem tradução;
  • Todo documento grande abre com um rabisco que resume o assunto, no estilo de rabisco do design system (a ADR-0037 dele): traço de lápis, Caveat, só as cores da marca, nos dois temas. O rabisco é desenhado por código em eng/sketches/boards/ e o texto ao redor sempre diz o mesmo que ele (o desenho não carrega informação sozinho). Nas stacks, o rabisco é a recomendação e o Mermaid é permitido (ORG-0005);
  • Imagem que não é rabisco é, de preferência, SVG desenhado por código (como o banner, eng/sketches/banner.mjs). Quando precisa de um gerador de imagens, nasce como prompt num arquivo <imagem>.prompt.md ao lado do caminho dela (o banner tem os dele, para uma versão futura gerada por IA), e o mantenedor gera a imagem;
  • Marca: o logotipo da Hibex é sempre o arquivo do design system, nunca texto redigitado nem desenho de imagem gerada.

Um projeto da Hibex Solutions.