MilWebWhatsApp
Voltar aos projetos

Loja de animes cinematográfica em 3D · checkout no WhatsApp

Akatsuki

Cena 3D + 2 temas animadosProjeto autoral · demo

Problema

Lojas de nicho (animes e colecionáveis) disputam atenção e precisam de uma vitrine memorável que venda sem fricção.

Solução

Loja imersiva em 3D (Three.js) com dois temas que se transformam entre Akatsuki e Expansão de Domínio, aura de energia por personagem ao adicionar ao carrinho, carrinho que persiste e pedido fechado direto no WhatsApp.

Como foi construído

A cena de fundo não é um vídeo nem uma imagem. É uma cena React Three Fiber renderizada num <Canvas> fixo atrás de todo o conteúdo, com lua, névoa e um campo de 120 partículas orbitais, todos movidos por shaders GLSL escritos à mão (ruído simplex, fbm) em vez de texturas prontas. A troca de tema entre Akatsuki e Expansão de Domínio não recarrega a cena: um único uniform uMorph interpola entre duas paletas e duas funções de céu dentro do mesmo fragment shader, então a lua vermelha e a esfera do Seis Olhos são a mesma geometria, só com o material mudando em tempo real.

Performance foi tratada como parte do design, não como ajuste depois. O Canvas roda em frameloop="demand" com um throttle manual a 30fps, porque o fundo é atmosférico e 60fps seria desperdício de GPU. O dpr fica travado em 1 mesmo em telas retina, o que corta ~75% dos fragmentos processados, e o render pausa sozinho quando a aba perde foco. Por cima disso existe um PerfModeProvider com heurística estática (RAM, núcleos, prefers-reduced-motion, ponteiro touch) e um watchdog que mede o FPS real nos primeiros segundos. Se cair abaixo de 45fps, a página rebaixa para um modo "lite" sem WebGL, só com atmosfera CSS, e memoriza a decisão no localStorage pra não travar de novo na próxima visita.

A camada de produto é deliberadamente simples por cima da complexidade visual. As 24 figures (heróis e vilões) e os mangás vivem num array tipado em lib/products.ts, o carrinho é um Context com localStorage que só persiste depois de hidratar, o que evita sobrescrever o storage no primeiro render, e cada personagem tem uma cor de "aura" mapeada em lib/aura.ts: Kurama vermelho pro Naruto, Limitless azul pro Gojo, Instinto Superior prateado pro Goku. Ela é disparada como uma explosão de partículas via Framer Motion quando o item entra no carrinho. Nenhuma dessas interações depende do Three.js: a aura, o toast e o "punch" do card são CSS e SVG puro, o que mantém a cena 3D isolada e code-split do resto da UI.

Não existe checkout. Cada card monta um link wa.me com a mensagem já preenchida (nome, anime, preço) e o carrinho monta uma única mensagem consolidada com todos os itens e o total antes de abrir o WhatsApp. A lógica de formatação de texto fica isolada em lib/whatsapp.ts, sem gateway de pagamento nem backend. Combinado com o code-splitting da cena 3D no Next 14 (só carrega no cliente) e com a página de produto usando View Transitions nativas do navegador para uma transição compartilhada entre o card e o detalhe, o resultado é uma loja que parece cara de rodar mas serve tudo estático, direto do edge da Vercel.

Shader único, dois universos

Um uniform uMorph interpola céu, lua e partículas entre os temas Akatsuki e Expansão de Domínio sem trocar de cena.

Watchdog de FPS

Mede o frame rate real após montar a cena e rebaixa pra modo "lite" (sem WebGL) se cair abaixo de 45fps, memorizando a escolha.

Aura por personagem

Cada figure tem uma cor de energia fiel ao lore (Kurama, Limitless, Instinto Superior) disparada ao entrar no carrinho.

Zero backend, zero checkout

Carrinho vira uma única mensagem formatada e o pedido fecha inteiro dentro do WhatsApp.

Mais telas

Hero no tema Akatsuki (Sharingan, lua vermelha)Hero no tema Expansão de Domínio (Seis Olhos)Catálogo com badges de raridade e CTA de WhatsApp

Stack

  • Next.js
  • TypeScript
  • Three.js
  • React Three Fiber
  • Tailwind
  • Framer Motion

Pronto para transformar sua ideia em um produto digital?

Me conta o que você precisa. Respondo rápido e te passo um orçamento gratuito, sem compromisso.

  • Contrato de garantia
  • Suporte pós-entrega
  • O código é seu
  • Orçamento gratuito