O problema
Prospecção, contratos, cobranças e projetos ficavam em ferramentas separadas, e eu perdia tempo procurando informação. Precisava de um lugar só, com o histórico completo de cada cliente.
Como eu fiz
- Back-end em Node.js com Express e PostgreSQL, com migrations versionadas.
- Login com sessão assinada e papéis de acesso (dono, comercial, produção, financeiro).
- Kanban comercial e Kanban de produção, com prazos e mudança automática de etapa.
- Captação de leads pela Google Places API, com filtro por site, Instagram e celular antes de salvar.
- Contratos gerados a partir de modelos versionados, com visualização A4 e PDF.
- Cobrança pelo Checkout Pro do Mercado Pago. O webhook confere o pagamento na API antes de confirmar.
- Conversões idempotentes: o mesmo lead nunca vira dois clientes, e o mesmo contrato nunca vira dois projetos.
- Notificações push no celular (app instalável) para pagamento, contrato assinado e novo lead.
- Segurança com helmet e limite de requisições; testes com node:test e supertest.
- Deploy em container Docker numa VPS Linux, integrado a workflows do n8n.
Tela do sistema
O que aprendi
Modelar dados pensando no que pode dar errado. Webhook chega repetido, usuário clica duas vezes, a API demora. Tratar isso no banco garante que nada é criado em dobro.