
Lançar a próxima marca sem refazer nada: Viaza e GoMilhas em um código só
Plataforma whitelabel completa para venda de passagens com milhas — busca, checkout PIX e pós-venda. Viaza e GoMilhas rodam no mesmo repositório, com tema, conteúdo e regras de marca trocando em tempo real. A próxima marca entra adicionando um arquivo de configuração — sem time novo, sem retrabalho.

O cenário do cliente
A operação roda duas marcas comerciais — Viaza e GoMilhas — atendendo públicos distintos com a mesma stack de busca, motor de tarifas e integração de gateway. O desafio era manter um único código capaz de comutar branding, rotas, conteúdo de CMS e tema em runtime conforme o domínio acessado.
O problema a resolver
Construir uma arquitetura whitelabel real: tema, logos, OG images, splash screens, rotas habilitadas e até copy de CMS variando por marca, sem hardcode espalhado pelo código. Tudo isso em cima de um stack moderno (Next 15 + React 19 + MUI 7) e mantendo PWA, SEO e conformidade com fluxos sensíveis de pagamento e autenticação.
No fluxo de auth coexistem três abordagens (keycloak-js no client, NextAuth e BFF custom com cookie httpOnly) — exigindo cuidado redobrado para não quebrar nenhum caminho de usuário em cada deploy.
Como atacamos
Implementamos resolução de marca em duas camadas: server-side via NEXT_PUBLIC_BRAND alimentando getServerBranding(), e client-side via atributo data-brand no <html> + ThemeProvider Emotion. Tudo o que muda entre marcas (logos, cores, assets, rotas desabilitadas) vive em src/styles/branding.ts como fonte única da verdade.
Estruturamos o frontend com App Router, React Query para data fetching, Zustand para estado de sessão/checkout e React Hook Form + Zod para os formulários críticos. A camada api/ separa contratos (interfaces) de implementação concreta (axios + Keycloak), inspirada em Clean Architecture, facilitando testes e troca futura de backend.
Pagamento via PIX integrado com Tuna (com criptografia de campos sensíveis), checkout reativo a status em tempo real via polling, fluxo completo testado em Vitest (unit) e Playwright (E2E). PWA com next-pwa para reengajamento e atribuição customizada para tracking de conversão.
O impacto entregue
Plataforma em produção sob duas marcas, com pipelines independentes de deploy, integração com CMS proprietário (cms.viaza.com.br) e checkout PIX/cartão funcional. Time consegue lançar uma nova marca whitelabel adicionando apenas um objeto de branding e os assets correspondentes — sem tocar em rota, componente ou serviço.
O que foi construído
- Arquitetura whitelabel multi-marca (Viaza + GoMilhas) num único repositório
- Tema MUI 7 dinâmico por marca via Emotion + data-brand no <html>
- Middleware reescrevendo rotas desabilitadas por marca + UTMs em cookie
- Auth Keycloak com 3 fluxos coexistindo (keycloak-js, NextAuth, BFF httpOnly)
- Checkout PIX (Tuna) com criptografia de campos e polling de status em tempo real
- Camada api/ inspirada em Clean Architecture com DI e interfaces tipadas
- PWA com next-pwa, Service Worker e atribuição custom
- Testes em Vitest (unit) e Playwright (E2E)
Continue explorando
MyBenk: banking white-label da Celcoin em 3 frentes (app, backoffice e BaaS)
Celcoin
Desenvolvimento e manutenção do MyBenk, plataforma de banking white-label da Celcoin, em três frentes: o app de internet banking para o usuário final (React Native/Expo), o painel backoffice de gestão (React e Next.js) e a integração com o Banking as a Service (BaaS) da Celcoin no backend (NestJS e MongoDB). Pix, contas PF e PJ e cartões operando sob a marca do cliente, que vira o banco do próprio ecossistema.
Dois projetos internos do Itaú 60% mais rápidos e mais estáveis em 3 anos
Itaú Unibanco
Dois projetos internos full-stack na área de Quality Products do maior banco privado do país, um Web e um Mobile, com requisitos rigorosos de segurança e acessibilidade. Atuação full-stack (cerca de 60% front-end e 40% back-end): a cobertura de testes subiu de 50% para 90% e o tempo de carregamento inicial caiu 60% com code splitting e lazy loading.