Estudo de caso · Sistema corporativo

Gestão de licitações públicas, da cotação ao dinheiro na conta.

Dentro do sistema interno de uma empresa que vende para prefeituras e órgãos públicos, desenvolvi dez módulos completos: da regra de negócio ao banco de dados, da tela ao documento assinado digitalmente, sempre com testes automáticos.

10
módulos completos
29 mil+
linhas de código
1.100+
casos de teste

Sistema interno: o nome da empresa, os clientes e os números reais são confidenciais. As telas desta página são ilustrações com dados fictícios que reproduzem o visual do produto.

O problema

Vender para o governo tem um ciclo longo. Cada etapa precisava de um sistema.

Entre cotar um item e receber por ele passam meses, com prazo legal, documento oficial e muita planilha no meio. Os módulos cobrem o ciclo inteiro:

  1. 1

    Vender

    Treinar quem cota, provar que o preço é viável e juntar os atestados que a licitação exige.

  2. 2

    Entregar e receber

    Saber o saldo de cada contrato, o que foi faturado e cobrar quem está atrasado.

  3. 3

    Controlar o dinheiro

    Caixa real, cartões, impostos, projeção e os indicadores da empresa.

  4. 4

    Pagar a equipe

    Comissão transparente, folha do mês e relatórios oficiais em PDF.

Os módulos

Explore cada módulo

Escolha um módulo para ver a tela e o que ele resolve. Clique na tela para ampliar.

Quadro de simulações de cotação com a nota da rubrica

Vender · Treinamento

Capacitação de cotação

Simulador de treino para quem está começando a cotar. O sistema cria licitações fictícias e realistas, a pessoa cota item a item e recebe uma nota de 0 a 10 com comentários de mentor. Nada do treino chega às vendas reais.

  • Cenários gerados automaticamente, com um custo-gabarito escondido
  • Nota em 5 critérios: cobertura, custo, qualidade da fonte, margem e a decisão de não cotar
  • Mesmas travas do processo real, incluindo a conferência por IA
  • Quadro com fila, rejeitadas e concluídas, e atribuição a cada trainee

Node.jsRegras purasSandbox≈ 60 testes

Editor do laudo de exequibilidade com a prévia do PDF

Vender · Documento oficial

Laudo de exequibilidade

Quando o órgão desconfia que o preço é baixo demais, a empresa precisa provar que consegue entregar. O módulo monta o laudo com o custo real de cada item (compra, frete, imposto, despesas) e a fonte de cada número, e emite o PDF assinado digitalmente.

  • Situação de cada item calculada, nunca escolhida: viável, margem apertada ou inviável
  • Não deixa emitir com dado ou evidência faltando: a lacuna aparece com o motivo, nunca como zero
  • Prévia do PDF ao vivo, com marca d'água
  • Documento emitido não muda: guarda a assinatura e o hash, e correção vira nova versão

Assinatura PAdESSHA-256pdf.js≈ 96 testes

Lista de órgãos priorizados e prévia do ofício assinado

Vender · Documentos e e-mail

Atestados de capacidade técnica

Muitas licitações exigem um atestado de quem já comprou da empresa. O módulo encontra as entregas que servem de base, gera o ofício de pedido assinado, deixa o e-mail pronto com os anexos e acompanha a resposta de cada órgão.

  • Prioriza quem pedir primeiro pelas próximas licitações que exigem atestado
  • Ofício em PDF com assinatura digital do certificado da empresa
  • Cria o rascunho no e-mail: uma pessoa revisa e envia, o sistema nunca envia sozinho
  • Lê as conversas e mostra de quem é a vez: responder, cobrar após 15 dias ou aguardar

PDF + PAdESIMAPPriorização≈ 220 testes

Itens ganhos agrupados por cidade e processo com o valor devido

Entregar e receber · Operação

Gerência de itens

Tudo o que a empresa ganhou, organizado por cidade, processo e item: quanto ainda resta no contrato, o que já foi pedido, em que ponto está a nota fiscal e quanto o órgão ainda deve. O financeiro dá baixa nos pagamentos linha a linha.

  • Consulta otimizada de 186 ms para 68 ms, medida em produção
  • Paginação que nunca divide uma cidade entre duas páginas
  • Correção em lote no modo simular → aplicar → desfazer
  • Registro manual de vitória quando a fonte automática falha, com histórico

SQL e índicesPaginaçãoBaixa de pagamento≈ 190 testes

Lista de notas a cobrar por atraso e prévia do ofício de cobrança

Entregar e receber · Financeiro

Cobranças

Mostra o que cada órgão deve, do maior para o menor, em faixas de atraso. Com alguns cliques, gera o ofício de cobrança assinado e o e-mail com as notas fiscais anexadas, e acompanha até o pagamento.

  • Tom cordial ou firme; acima de 60 dias, o ofício cita a lei de licitações
  • Sincroniza as notas fiscais com o Google Drive de hora em hora
  • Lê a nota fiscal (DANFE) e valida a chave de acesso; IA só como reserva para nota em imagem
  • Evita cobrar a mesma nota duas vezes

Apps ScriptDANFEIMAP≈ 114 testes

Controle financeiro com saldos, projeção de caixa e simulação de compra

Controlar o dinheiro · O maior módulo

Controle financeiro

O centro financeiro das empresas do grupo: saldo real de cada conta, cartões com parcelas e faturas, custos fixos, orçamento, recebimentos, fechamento do mês e DRE, tudo num lugar só.

  • "Posso comprar?": simula a compra no caixa e indica o melhor cartão
  • Importa extrato OFX, CSV ou PDF com prévia e sem duplicar lançamentos
  • Faturas de cartão com fechamento real, feriados e até a Páscoa calculada
  • Projeção de caixa, DRE, Simples Nacional e fechamento lendo o XML das notas
  • Dados de cartão criptografados (AES-256) e cada acesso registrado

OFX/CSV/PDFConciliaçãoDREAES-256≈ 350 testes

Dashboard com resultado, a receber, gráfico de 12 meses e curva ABC

Controlar o dinheiro · Indicadores

Dashboard da empresa

A visão de dono: resultado, quanto há a receber, quanto entrou, saldo de contrato ainda não faturado e ticket médio, em qualquer período e comparado com o anterior ou com o mesmo período do ano passado.

  • Atraso por faixa e prazo médio de recebimento
  • Curva ABC de clientes, Pareto e meta × realizado
  • Cerca de 14 consultas rodando em paralelo para montar a tela
  • Gráficos desenhados à mão em SVG, sem biblioteca

SQL/CTEIndicadoresSVG

Painel de transparência com a situação da comissão de cada item

Pagar a equipe · Auditoria

Transparência de comissões

Cada pessoa vê a comissão que gerou em cada item e em que ponto ela está: aguardando pedido, aguardando liberação, a sacar no mês ou paga. Cada linha explica por que o dinheiro ainda não saiu.

  • Libera proporcionalmente ao que o órgão já pagou, no mês em que o dinheiro caiu
  • Um único ponto de cálculo, protegido por teste que impede contas duplicadas
  • "Não sei" nunca vira R$ 0,00: quando falta dado, a tela mostra o motivo
  • Descontos por prejuízo e perdão com justificativa registrada

SQL/CTEPró-rataAuditoria≈ 67 testes

Grade da folha de pagamento com fixo, bônus, comissão e total

Pagar a equipe · Financeiro

Folha de pagamento

A folha mensal da equipe: fixo, bônus, comissão liberada, moedas de incentivo e descontos. O financeiro edita tudo numa grade e exporta o PDF timbrado.

  • A comissão vem da mesma régua da transparência: as duas telas nunca discordam
  • "Salvar tudo" é tudo ou nada: se uma linha falhar, nenhuma é gravada
  • Recálculo ao vivo e chave PIX que herda a do mês anterior

Transação em lotePDF

Geração de relatórios em PDF timbrado

Pagar a equipe · Documentos

Relatórios

PDFs oficiais em papel timbrado: o relatório de comissões por pessoa (ou de todos, num ZIP com um arquivo por pessoa) e o relatório de faturamento e recebimentos do período.

  • Atalhos de período: semana, quinzena, mês, últimos 30 dias
  • Tratamento de texto que acabou com os PDFs que quebravam por símbolos
  • A mesma geração funciona na tela e por linha de comando

pdf-libZIPCLI

Como foi construído

Dinheiro não admite "mais ou menos".

Os dez módulos seguem as mesmas regras de engenharia. Para o cliente, isso significa números que batem, histórico de tudo e documentos em que dá para confiar.

Regra separada do resto

Cada decisão de negócio é uma função isolada, sem banco e sem internet. A mesma regra serve à tela, ao PDF e aos testes.

Histórico de tudo

Cada mudança registra quem fez, quando, de onde, o valor de antes e o de depois, e o motivo, na mesma gravação.

Um lugar só para o dinheiro

Valores sensíveis saem de um único ponto de cálculo. Um teste automático falha se alguém refizer a conta em outro lugar.

Falta de dado não vira zero

Quando falta informação, a tela mostra o motivo. Nunca aparece um "R$ 0,00" que engana.

Documento oficial não muda

Ofícios e laudos emitidos ficam travados, com assinatura digital e hash. Para corrigir, cria-se uma nova versão.

Testado com banco de verdade

Os testes sobem um PostgreSQL descartável e exercitam o caminho inteiro, além dos testes rápidos de cada regra.

Regra pura: a situação de um item é calculada, nunca escolhida trecho ilustrativo
function statusDoItem({ custoCents, precoCents, margemMinima }) {
  if (custoCents == null || precoCents == null)
    return { status: 'incompleto', motivo: 'falta custo ou preço' };
  const margem = (precoCents - custoCents) / precoCents;
  if (margem < 0)            return { status: 'inviavel', margem };
  if (margem < margemMinima) return { status: 'apertado', margem };
  return { status: 'viavel', margem };
}
Mudança e histórico gravados juntos, ou nenhum dos dois trecho ilustrativo
await tx(pool, async (client) => {
  const antes = await lerComTrava(client, id);   // SELECT … FOR UPDATE
  const v = regra.validar(antes, entrada);       // função pura
  if (!v.ok) throw new Recusa(v.motivo);
  await gravar(client, id, v.para);
  await registrarEvento(client, {
    tipo: 'DocumentoAtualizado', entidadeId: id,
    payload: { de: antes, para: v.para, motivo: entrada.motivo },
    autor, contexto,
  });
});

Back-end

Node.jsExpressEJSBullMQ + Redisnode-cron

Dados

PostgreSQLSQL com CTEsJSONBLog de eventos

Front-end

JavaScript puroTailwinddaisyUISVGpdf.js

Documentos

pdf-libAssinatura PAdESNF-e XML/DANFEOFX/CSV

Integrações

E-mail IMAPGoogle Apps ScriptEmissor de NF-eAPIs de CNPJ/CEPLLMs

Qualidade

Testes de unidadePGliteTestes-guardaGitHub Actions

Sua empresa ainda roda em planilhas?

Comissão, cobrança, caixa, documentos oficiais: dá para ter um sistema feito para o jeito que a sua empresa trabalha.