Pular para o conteúdo
Guias de projetos

Plataformas

CRM de leads

CRM que acompanha o lead de uma clínica do primeiro contato ao fechamento do tratamento, com a agenda no mesmo lugar.

Quadro de leads do CRM: colunas Leads, Agendados, Não agendados, Cancelados e Faltosos, com um card por lead.

O problema

A clínica recebia leads de anúncios e controlava tudo em planilha: quem chamou, quem agendou, quem faltou, quem fechou.

O resultado

O CRM troca a planilha por dois painéis, um para cada momento do funil, e mede o resultado sozinho. Ele abre dentro da plataforma de mensagens que a clínica já usa, então a equipe atende e move o card sem trocar de tela.

  • CRC1, agendamento: do lead que chegou até a avaliação marcada.
  • CRC2, fechamento: do paciente que compareceu até o tratamento fechado.
  • Agenda: cada consulta anda junto com o card do paciente.
  • Dashboard e metas: o gestor vê o funil, a receita e o que precisa de ação.
  • Origem do lead: identificada pelo anúncio, com funil por campanha.
  • API pública: contrato OpenAPI, chaves por clínica e webhooks de saída.
  • Várias clínicas e unidades no mesmo sistema, cada uma isolada da outra.

Como foi construído

Um app Next.js e um processo de tarefas em segundo plano, do mesmo código.

  • Clean Architecture por módulo: domínio puro, casos de uso e adaptadores. Uma verificação automática barra qualquer dependência fora da regra.
  • Toda escrita passa por um caso de uso, que grava a mudança, o evento de histórico e o webhook de saída na mesma transação.
  • API com um esquema só: o mesmo esquema valida a chamada e gera a documentação.
  • Regras no banco testadas de verdade: os testes aplicam as migrações reais em um Postgres que roda dentro do processo.
  • Decisões registradas: mais de 30 registros de decisão de arquitetura (ADRs).

Stack por camada

  • Telas: Next.js 16, React 19, Tailwind 4, shadcn/ui, TanStack Query, dnd-kit
  • API: Hono, zod, OpenAPI 3.1, Scalar
  • Dados: PostgreSQL, Drizzle, pg-boss
  • Qualidade: TypeScript, Vitest, ESLint, dependency-cruiser, CI no GitHub Actions
  • Entrega: Docker, nginx, VPS

Telas

Os dados que aparecem nas telas são fictícios.