E-commerce & Marcas
Plataforma multi-tenant de campanhas promocionais para marcas de consumo
Contexto
Uma agência entrega campanhas promocionais para marcas de grande consumo: o consumidor compra o produto, cadastra a nota fiscal num site da marca e recebe cashback, concorre a sorteio ou ganha prêmio instantâneo. Cada marca quer o seu próprio domínio, a sua identidade visual, o seu regulamento e a sua mecânica — e as campanhas entram e saem do ar em semanas. Fazer um projeto novo por marca não escala; manter dezenas de forks divergentes, menos ainda.
Desafio
Servir dezenas de campanhas de marca — cada uma com fluxo de cadastro, campos, optins de LGPD, tema e mecânica próprios — de uma única base de código, sem que adicionar a marca seguinte exija tocar no núcleo. Ao mesmo tempo, tornar confiável a parte mais sensível: ler a nota fiscal (foto com OCR ou chave de 44 dígitos), validar a compra e pagar cashback na conta certa, com um time de operação auditando o que o robô não decide sozinho.
Abordagem
- Frontend multi-tenant em Next.js com React e TypeScript: o hostname da requisição resolve o slug da campanha, e tema, cabeçalho, rodapé, banners e passos extras vêm da API por marca — uma implantação serve dezenas de domínios de marca sem branch por cliente.
- Motor de campanha orientado a dados: cada marca declara, em configuração, os passos do cadastro (ordem e campos por etapa), os campos condicionais (endereço, chave PIX, perguntas de perfil), os textos de optin/LGPD e os modificadores de estilo — a lógica de renderização do formulário é uma só.
- Regras específicas de marca isoladas num diretório por campanha (componentes, produtos participantes, modais, integrações de SAC), de modo que a campanha seguinte é uma pasta nova, não um garfo do núcleo.
- Captura de nota fiscal com dois caminhos: foto enviada para OCR (extração de chave, número, data, UF e itens por EAN) e digitação/leitura da chave de acesso de 44 dígitos, com limite de tamanho de arquivo e validação antes de submeter para pagamento.
- Mecânicas promocionais sobre a mesma base: cashback via PIX, sorteio com número da sorte, prêmio instantâneo, programa de selos e roleta — acionadas por configuração da campanha.
- SSR com servidor Node/Express próprio: política de segurança de conteúdo (CSP) montada dinamicamente por hostname, nonce por requisição, cabeçalhos de segurança via Helmet e report-uri para violações.
- Autenticação centralizada numa biblioteca compartilhada (git submodule) consumida por todos os frontends: login por e-mail, Google e Facebook, controle de client token e session token, auto-login que renova a sessão a cada 3 minutos e recuperação do usuário em server-side render — um contrato de auth único em vez de uma implementação por projeto.
- Painel administrativo separado em Next.js com camada de cache em Redis: filas de auditoria de notas e de auditoria de cashback (aprovar/rejeitar com motivo), gestão de campanhas, marcas, cupons e extrato financeiro, autenticado pela mesma biblioteca compartilhada.
- Componentização documentada em Storybook nos frontends e no painel, testes com Jest e Cypress, e quality gate em CI (SonarQube, GitLab CI, Husky/lint-staged).
- Reescrita do app de nota fiscal iniciada como design system próprio (componentes de tema por campanha, Storybook, Cypress) para substituir a captura acoplada ao monólito de campanha.
Resultado
Plataforma que sustentou promoções de dezenas de marcas de grande consumo ao longo de cerca de três anos numa mesma base de código, com o onboarding de uma nova campanha reduzido a configuração e uma pasta de regras, em vez de um projeto novo. Fluxo de nota fiscal com OCR e pagamento de cashback via PIX em produção, auditado por um painel administrativo dedicado, e um contrato de autenticação compartilhado entre todos os frontends.