Pular para o conteúdo
Todos os projetos
Full StackBackendDadosCloud

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
Tela principal do projeto Holding Hub

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.

  1. Navegador / app Flutter

    Web, Android e iOS

  2. Nginx com TLS

  3. API Express

    Contêiner não-root

  4. Camada de domínio

    KPIs, cronograma, juros, curva J

  5. PostgreSQL e documentos

Fluxo

Como o processo acontece.

  1. 01

    Orçamento

    Nove seções, inclusive consórcio

  2. 02

    Aprovação

    Cronograma vira lançamentos no razão

  3. 03

    Obra

    Cockpit com prazos, documentos e diário

  4. 04

    Recebimento

    Pagamento parcial ou quitação, com trava de saldo

  5. 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.