
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 e 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.
App nas duas lojas em 4 meses: cliente acompanhando o plano sem passar pelo atendimento
StartPrev
App mobile que liga o cliente diretamente à empresa e agiliza a administração do plano. O cliente vê o status do próprio processo, é avisado quando algo anda e fala pelo chat integrado. Publicado na App Store e na Google Play a partir de um código só, em quatro meses.