Voltar ao trabalho

Surfers Paradise · E-commerce e operação de loja · 2026

Não era apenas uma loja online. Era preciso construir toda a operação de e-commerce.

E-commerce completo para uma loja de surf com 20 anos de mercado no Brasil: catálogo, checkout com PIX, boleto e cartão, logística e painel de gestão.

  • E-commerce
  • Pagamentos
  • Logística
Cliente
Surfers Paradise, Brasil
Estado
Em produção.
3
meios de pagamento: PIX, boleto e cartão parcelado
17
modelos de dados, ~60 rotas de API
9
scopes Melhor Envio: cotação, etiquetas, tracking
Homepage da Surfers Paradise

Homepage — banners geridos no painel, marcas em destaque, produtos com preço PIX e parcelas.

Contexto

Uma loja física de surf com duas décadas de história queria vender online com a mesma profundidade de catálogo das grandes lojas brasileiras do setor: pranchas, wetsuits, quilhas, acessórios, dezenas de marcas.

Já tinha construído o e-commerce da Elite Surfing em React/Vite + Express. Este projeto foi a oportunidade de migrar essa arquitetura para um monorepo Next.js e resolver de raiz o que tinha aprendido.

O problema

Produtos de surf não são "um produto com variantes": uma prancha 5'10 e a mesma prancha 6'3 têm preço, stock, SKU e fotos diferentes. O modelo de dados tinha de refletir isso sem transformar o catálogo num pesadelo de gestão.

O mercado brasileiro exige PIX, boleto e cartão parcelado, cálculo de frete por CEP com várias transportadoras, nota fiscal, e proteção contra fraude — tudo com o cliente a sair se o checkout demorar.

O meu papel

Único developer: arquitetura, modelo de dados, integrações de pagamento e logística, painel de administração, SEO e catalogação inicial com a cliente.

Restrições

  • Catálogo profundo com variantes reais (tamanho, cor) que têm SKU, stock, preço e fotos próprios.
  • Mercado brasileiro: PIX, boleto, parcelamento, frete por CEP com várias transportadoras, nota fiscal.
  • Fraude: uma loja nova é alvo imediato de cartões testados e pedidos falsos.
  • A equipa da loja tinha de operar o painel sem apoio técnico.

Solução

Monorepo Next.js 16 com 17 modelos Mongoose e cerca de 60 rotas de API. Sistema de "família de produtos": cada tamanho ou cor é um produto independente agrupado por família, com uma variante principal nas listagens e botões de troca na página do produto.

Checkout com revalidação de preços e stock no servidor, cupões validados server-side, pagamentos via Mercado Pago (Card Payment Brick, PIX com QR dinâmico, boleto) com webhook assinado, e cron para cancelar pedidos expirados.

Página de produto
Página de produto — troca de variantes da família, preço PIX, parcelas e frete por CEP.
Painel de administração
Painel — formulário de produto com família, variante, imagens e SEO.

O que foi construído

  • Painel de administração: categorias hierárquicas (3 níveis), marcas, produtos com imagens múltiplas e SEO, banners por posição, cupões, fornecedores, pedidos.
  • Melhor Envio com todos os 9 scopes: cotação por CEP, carteira, geração e impressão de etiquetas.
  • Importação de NF-e de fornecedores (XML) para entrada de stock, item a item.
  • Ponto de venda (POS) para vendas na loja física, fecho de caixa e romaneios.
  • Anti-fraude: bloqueio silencioso, validação de CPF, deteção de texto aleatório, emails descartáveis, verificação de velocidade.
  • Login com Google e email/password (OTP), recuperação de password, retoma de pagamentos PIX/boleto pendentes.
  • Blog, newsletter LGPD com cupões, wishlist, reviews, SEO com sitemap gerado a partir do MongoDB.

Decisões-chave

Variantes como produtos independentes

Em vez de opções dentro de um produto, cada tamanho/cor é um documento próprio com productFamily, variantType e isMainVariant. Custa mais no cadastro, mas o stock, o SKU e as fotos ficam certos — que é o que interessa a quem embala.

Mercado Pago em vez de Pagar.me

O checkout foi construído em Pagar.me V5 e migrado para Mercado Pago quando as condições comerciais e a estabilidade do PIX justificaram. A abstração de pagamentos permitiu trocar sem tocar no resto do checkout.

Resultado

Loja em produção com catálogo, pagamentos, frete e nota fiscal a funcionar de ponta a ponta, e um painel que a equipa da loja opera sem apoio técnico.

A arquitetura tornou-se a base de dois projetos seguintes para outras marcas do setor.

O que mudaria

A abstração de pagamentos pagou-se sozinha na migração de Pagar.me para Mercado Pago. Numa próxima loja faria o mesmo para o frete desde o primeiro dia.

Variantes como produtos independentes foi a decisão certa para quem embala; para quem cadastra, precisa de mais automação no painel — clonar família, edição em massa.

Stack

Next.js 16 · TypeScript · MongoDB · Mongoose · NextAuth v5 · Mercado Pago · Melhor Envio · Resend · Cloudinary · Zod · Vercel

Próximo projeto

Chi Sublime

Levar toda a operação de um negócio de serviços para uma única plataforma.

Plataforma de gestão para um salão de cabeleireiro e estética em Cascais: site, reservas online, área de cliente, ponto de venda, caixa e faturação certificada.

Ver projeto
Fluxo de reserva do Chi Sublime