Holding Hub
Gestão financeira e operacional multiempresa: orçamentos, recebíveis, obras e estoque de um grupo de cinco empresas.
- Tipo
- Sistema de gestão multiempresa
- Status
- Em produção
- Ano
- 2026
- Cliente
- Holding com cinco empresas (sob sigilo)
- Papel
- Desenvolvimento full-stack, arquitetura e deploy

Código-fonte privado. Este estudo de caso apresenta as principais funcionalidades, a interface e a arquitetura em alto nível.
Visão geral
O que é este projeto.
Um sistema full-stack que consolida os números de uma holding com quatro empresas de engenharia e uma loja, com regras financeiras testadas e isolamento de dados por empresa.
Contexto
Um grupo de cinco empresas precisava enxergar o dinheiro de todas num lugar só. Quatro empresas de engenharia vivem de contratos longos e consórcio; uma loja vive de estoque e venda no balcão. A diretoria queria números consolidados — e queria confiar neles.
Objetivo
Transformar o protótipo num sistema em produção no qual cada número do painel vem do servidor, os dados de uma empresa não vazam para outra e o razão fecha com o contrato.
O problema
A primeira versão tinha telas bonitas e gráficos animados, mas o frontend não falava com o backend, o login aceitava qualquer senha, documentos de clientes ficavam públicos e o cálculo de lucratividade contava despesa como receita. Uma auditoria listou 34 problemas. A interface mentia com convicção.
A solução
Em 16 etapas versionadas: um único cliente Flutter (web e mobile), API Node.js/TypeScript com 58 endpoints, JWT com refresh rotativo, autorização por empresa e papel, e todas as regras financeiras numa camada de domínio coberta por testes. Publicado em VPS com Docker, Nginx/TLS e backup diário.
- Endpoints REST
- 58
- Achados de auditoria
- 34 resolvidos
- Testes de domínio
- 48
Funcionalidades
O que o sistema faz.
Do cadastro simples ao que exige regra, transação e recuperação de falha.
- Dashboard com KPIs calculados no servidor e drill-down até o lançamento
- Matriz de saúde: liquidez, margem e inadimplência por empresa
- Orçamentos em consórcio com rateio entre empresas do grupo
- Cronograma de recebíveis e curva de capital de giro
- Cockpit de obra com avanço físico × financeiro e gestão de documentos
- Fluxo de caixa com extratos, atrasos e pagamentos parciais
- Estoque com PDV que baixa o item e lança no caixa na mesma transação
- PDF do orçamento com a marca da empresa emissora
Interface
As telas do sistema.
Capturas reais do sistema em funcionamento. Clique para ampliar.
Dashboard BI & KPIs
Os seis indicadores do topo são calculados no servidor; o filtro de período refaz o recorte e cada card abre a lista de lançamentos que o compõe.
Matriz de saúde das empresas
Liquidez, margem e inadimplência lado a lado. Empresa sem movimento no período aparece como "sem dados", não como 100%.
Studio de propostas
Pipeline em análise (fora do balanço) e contratos aprovados. Aprovar lança o cronograma no razão; reverter só é permitido enquanto nada foi recebido.
Cockpit do projeto
Resumo financeiro do contrato com margem calculada sobre o que entrou em caixa — e não sobre o valor contratado.
GED e cronograma físico
Documentos por categoria, com upload validado pela assinatura binária do arquivo, ao lado das etapas de obra e do avanço físico × financeiro.
Fluxo de caixa
Extratos de receitas e despesas com progresso de quitação, edição direta e travas contra apagar lançamento que já recebeu.
Calendário operacional
Entregas, medições e vencimentos. O que venceu sem baixa é trazido para hoje, com a contagem de dias em atraso.
Estoque e PDV
Catálogo com alerta de estoque mínimo; a venda baixa o item e lança a receita no caixa dentro da mesma transação.
Painel de recebíveis e tarefas
Chips de filtro em que a contagem e a lista saem do mesmo caminho — atraso e vencimento de hoje são sempre a posição de hoje.
Equipe e responsáveis técnicos
Profissionais com registro no conselho; são eles que assinam os orçamentos emitidos por cada empresa do grupo.
Acesso
Sessão com token curto e renovação automática; sem "lembrar-me", nada fica gravado no navegador.
Por trás da aplicação
Como isso funciona por dentro.
A parte que o visitante não vê na tela: camadas, autenticação, dados, integração e operação.
Autenticação JWT
Access token curto e refresh rotativo. Um Future compartilhado no cliente evita que vários 401 disparem várias renovações.
Multi-tenancy
Tabelas compartilhadas, separação por coluna. A holding vê o consolidado; as demais só a própria empresa.
REST APIs
58 endpoints. Rotas validam, autorizam, abrem a transação e chamam o domínio.
Integridade financeira
O razão sempre fecha com o contrato. Pagamento registrado não some por exclusão ou reversão.
Docker e TLS
Contêineres não-root, portas só locais, Nginx no host, backup diário de banco e documentos.
Arquitetura
As camadas, de cima para baixo.
Representação em alto nível — sem expor detalhe de infraestrutura.
Navegador / app Flutter
Web, Android e iOS
Nginx com TLS
API Express
Contêiner não-root
Camada de domínio
KPIs, cronograma, juros, curva J
PostgreSQL e documentos
Fluxo
Como o processo acontece.
- 01
Orçamento
Nove seções, inclusive consórcio
- 02
Aprovação
Cronograma vira lançamentos no razão
- 03
Obra
Cockpit com prazos, documentos e diário
- 04
Recebimento
Pagamento parcial ou quitação, com trava de saldo
- 05
Consolidado
Holding enxerga o grupo sem misturar dados
Stack
Tecnologias utilizadas.
Frontend
- Flutter
- Dart
Backend
- Node.js
- Express
- TypeScript
- Prisma
Banco de dados
- PostgreSQL
Infraestrutura
- Docker
- Nginx
- TLS
Qualidade
- Vitest
- Playwright
Destaques técnicos
Decisões que sustentam o sistema.
- Regras financeiras isoladas numa camada de domínio pura, com 48 testes
- Multi-tenant com quatro guardas: empresa, módulo, papel e vínculo pai-filho
- Guarda de integridade que lê o estado depois da escrita, dentro da transação
- Renovação de sessão sem tempestade de refresh tokens de uso único
- Upload que confere a assinatura binária do arquivo, não só a extensão
- Ids determinísticos para sincronizar proposta e razão sem tabela de ligação
- Deploy que recusa segredo de exemplo, porta exposta e CORS irrestrito
Quer algo assim para o seu processo?
Me conte como funciona hoje. Respondo com uma leitura do problema e um caminho possível.

