AgiotaLegal
Cobranças e assinaturas para pequenos negócios, com Pix em cada cobrança e lembrete por WhatsApp ou e-mail.
Produto próprio · Cobranças · Node.js
Imagens
Contexto
O AgiotaLegal é um sistema multi-tenant de cobranças. O negócio cadastra o que vende, associa clientes e o sistema gera a cobrança no vencimento, com Pix e lembrete.
A web está em português e inglês. O navegador fala só com o Next. A API em Express fica atrás dele.
Problema
A cobrança tem de sair no dia certo, levar um Pix e avisar o cliente antes e depois do vencimento, sem custo por transação e sem gateway.
O que fiz e por quê
Monorepo pnpm. A web é Next.js 16 e React 19, na Vercel, atrás do Cloudflare. A API é Express 5, Prisma 6 e PostgreSQL 16, no Railway, com um worker BullMQ e Redis no mesmo código. Os contratos ficam em Zod, num pacote compartilhado. O schema tem 13 modelos.
O serviço aceita cobrança única, semanal, mensal, anual ou a cada N dias. A assinatura pode ter um valor próprio por cliente. Os valores ficam em centavos, de R$ 0,01 a R$ 1.000.000,00. A cobrança nasce 7 dias antes do vencimento. O atraso vira no fim do dia, no fuso da conta.
O Pix é um BR Code estático, montado na hora com a chave da conta, o valor e o identificador da cobrança. Não fica gravado. A baixa é manual, porque não há gateway.
O canal padrão é o WhatsApp manual: o sistema prepara o texto e um link wa.me, e quem envia é o usuário. E-mail e a API da Meta também existem. Mensagem só sai para cliente que consentiu.
Senha com argon2id, 2FA TOTP e sessão opaca em cookie httpOnly. Segredos com AES-256-GCM. O domínio dos testes tem piso de 90% no repositório.
Resultado
Ainda sem domínio público. Números de uso: [PREENCHER].