Cirene — SaaS de afiliação e comissões.
Plataforma multi-tenant onde lojistas criam campanhas de cupom, afiliados ganham por venda através de uma conta corrente, e uma hierarquia de representantes comerciais é remunerada por metas próprias. Reescrita de um sistema legado em Oracle APEX que nunca chegou a produção.
- Cliente
- Cirene
- Período
- 2026
- Papel
- Arquiteto e desenvolvedor principal
Domain models
56
Application code
~44.5k LOC
Role hierarchies
4
Legacy replaced
14 PL/SQL pkgs
O problema
O negócio tinha passado mais de um ano construindo sobre Oracle APEX — catorze packages PL/SQL, banco Oracle na OCI, endpoints REST via ORDS e três microsserviços em Docker — e ainda não havia colocado nada na frente de um cliente. A stack não era o fracasso em si; o problema é que ninguém conseguia entregar uma mudança rápido o bastante para aprender alguma coisa.
A única vantagem daquela situação: não havia dado de produção para migrar. A reescrita podia ser um corte limpo.
A solução
Reescrita completa como uma única aplicação Next.js, entregue como quatro portais distintos sobre um mesmo modelo de domínio: administração, lojista, afiliado e representante comercial — este último com prepostos, metas e fechamento mensal próprios.
- As imagens de cupom e comprovante são geradas no servidor com satori e resvg, substituindo o microsserviço Puppeteer que o legado precisava para a mesma tarefa.
- Contratos e termos são editados em editor rich-text com interpolação de variáveis, e o aceite fica registrado com trilha de assinatura.
- Chamados de suporte, impersonação com log de auditoria e catálogo público de produtos completam o que a operação de fato usa no dia a dia.
Arquitetura
Monolito Next.js sobre Server Actions, Prisma sobre PostgreSQL, cinquenta e seis modelos cobrindo a cadeia comercial inteira. Entrega uma imagem Docker multi-stage com saída standalone junto de um compose, então pode ser auto-hospedado em vez de ficar preso a uma plataforma.
- Pagamentos. Asaas de ponta a ponta — checkout de assinatura, Pix, autorização de Pix desacoplada, ingestão de webhook com ferramenta de replay para depuração.
- Financeiro. DRE, contas a pagar e importação de extrato OFX conciliada contra os lançamentos.
- Mensageria. WhatsApp Cloud API com gestão do ciclo de vida dos templates por script — criação, verificação e geração de documentação — porque a aprovação de template é o elo mais lento dessa cadeia.
- Quatro rotas de cron cuidam da renovação de assinatura por Pix, assinaturas a vencer, fechamento mensal do representante e fim de trial.
Resultados
O sistema chegou a produção e a um ambiente de homologação no mesmo ano em que a reescrita começou, contra um legado que não entregava havia mais de um ano. Comercial, financeiro e afiliação rodam sobre um único banco com um único modelo de permissão, e cadastrar um lojista novo não exige mais um desenvolvedor.
Stack completa