ACID, Sistema de Gestão Associativa
Detalhes do Projeto
- Período:
- 06.2026 → hoje
- Client Project
- SaaS Multi-tenant
- TypeScript
- Next.js
- PostgreSQL
- Prisma
- Redis
- Asaas
- ClickSign
- Webhooks
- Playwright
- Docker

Impacto em números
Termo, assinatura e cobrança automáticos
Asaas, ClickSign, Cloudinary, WhatsApp, LEMIT, Receita, SMTP e Sentry
De uma planilha, com o CNPJ completando o cadastro
Do lead ao associado ativo, num único schema
A transformação
Sobre o projeto
Associações comerciais operam em planilha, WhatsApp pessoal, pasta de e-mail e papel. Pedido de associação chega no balcão e é digitado à mão. Termo é impresso e assinado fisicamente. Cobrança é boleto avulso, sem régua nem controle de inadimplência. Ninguém sabe, em tempo real, quantos associados estão ativos nem quanto entra de receita recorrente.
O custo disso vai além do operacional. É institucional: a diretoria decide sem dado confiável.
A decisão de produto mais importante do projeto foi tirar o login do candidato. Ele interage apenas por formulário público, WhatsApp, e-mail e links de assinatura e pagamento, e quem loga é a equipe administrativa. Toda vez que você exige cadastro antes de entregar valor, você perde gente.
Oportunidades (Kanban + enriquecimento de CNPJ)
|
Formulário público /associe-se
|
Aprovação -> Termo (PDF timbrado) -> ClickSign -> Asaas
|
PENDENTE > APROVADO > AGUARDANDO_ASSINATURA > AGUARDANDO_PAGAMENTO > ATIVO
Máquina de estados explícita do associado, com cada transição auditada. O estado não é uma string solta, é o contrato do sistema.
Um adapter por integração. Asaas, ClickSign, Cloudinary, WhatsApp, LEMIT, Receita Federal e SMTP ficam atrás de camadas próprias, então trocar de gateway não reescreve regra de negócio.
BaaS com subcontas Asaas: cada tenant com a própria subconta, split e conciliação isolados.
Redis para retries, jobs agendados e idempotência de webhook. Se o Redis cair, o sistema continua servindo e só perde o assíncrono.
Um schema Zod único compartilhado entre cliente e servidor.
Governança digitalizada. Diretoria, cargos, atas com assinatura eletrônica e lista de presença viraram entidades, e o histórico institucional saiu da pasta.
A carteira que já existia não podia ficar para trás. Cerca de 140 associados ativos vieram de uma planilha, e cada CNPJ passou por uma cascata de provedores de consulta, com um gratuito de reserva, que preencheu ramo, nome fantasia e endereço antes de o registro nascer. A importação cria o associado já ativo e com plano, mas não cobra ninguém: faturar é um passo separado, feito quando a equipe decide. Em setembro entrou o plano por porte, e a adesão passou a oferecer só o plano que cabe no tamanho da empresa.
Testes em duas camadas, com Vitest e Playwright, cobrindo cadastro e cobrança, que são os fluxos que custam dinheiro quando quebram.
O desafio
Encadear quatro sistemas externos, de assinatura, pagamento, mensageria e storage, num fluxo que não pode falhar pela metade. Um termo assinado sem cobrança criada, ou uma cobrança criada sem termo, deixa a associação em situação jurídica ruim.
Resolvi com máquina de estados explícita, idempotência de webhook via Redis e retry com backoff. Cada etapa é reentrante, e o estado do associado é sempre a verdade, e não o que o provedor externo achou que aconteceu.
Métricas de Crescimento
Modelos no schema
Resultados
Cadastro de associado saiu de dias para horas. Régua de cobrança automatizada com conciliação por webhook, receita recorrente visível em tempo real e um produto multi-tenant replicável para outras associações.
Stack técnica
Next.js 16 e React 19
Formulário público, painel administrativo e webhooks num único deploy.
PostgreSQL e Prisma
Migrações versionadas, sem divergência entre ambientes.
Asaas
Cobrança recorrente por PIX e boleto, subcontas por tenant e conciliação por webhook.
ClickSign
Assinatura eletrônica do termo com retorno automático do documento assinado.
Redis
Filas, jobs agendados e idempotência de webhook, com degradação graciosa.
pdf-lib e Puppeteer
Termos e documentos em PDF com timbre institucional.
Vitest e Playwright
Cobertura dos fluxos críticos de cadastro e cobrança.
Sentry
Observabilidade em produção com alerta automático.
LEMIT e Receita Federal
Consulta de CNPJ em cascata, que completa o cadastro antes de o registro nascer.
Evolution API
WhatsApp para avisar candidato, associado e equipe.
Galeria(2)

