E-commerce · Catálogo
Laticínios Popoio
Site e catálogo online de um empório da Mooca com mais de 40 anos: carrinho com pedido pelo WhatsApp, produtos por peso ou unidade, ficha técnica e painel administrativo próprio.
- Meu papel
- Desenvolvedor full-stack · projeto autoral, da modelagem ao deploy
- Período
- Desde set 2026

Em números
40+
anos de história do empório atendido
2
modos de venda: por peso e por unidade
0
deploys para atualizar o catálogo (revalidação sob demanda)
Contexto
O Laticínios Popoio é um empório tradicional da Mooca, em São Paulo, com mais de 40 anos de história. O site apresenta a loja, mostra o catálogo e recebe pedidos pelo WhatsApp, que já era o canal de atendimento dos clientes. A loja também tem um painel administrativo para manter o catálogo.
O desafio
O empório vende por peso (300 g de queijo, por exemplo) e por unidade, e atende por WhatsApp, sem pagamento online. O site precisava calcular o pedido corretamente nos dois modos, montar uma mensagem de pedido completa e à prova de adulteração, e dar à própria loja um jeito seguro de atualizar produtos, preços e fotos sem mexer em código.
O que foi construído
- Carrinho com persistência no navegador (Zustand) e dois modos de venda: por peso, com opções de 100 g a 1 kg e quantidade personalizada em gramas ou quilos, com preço por quilo proporcional; e por unidade.
- Checkout pelo WhatsApp: gera a mensagem com itens, subtotal, frete, dados do cliente, entrega ou retirada, forma de pagamento e troco. O total é recalculado a partir dos preços do catálogo, não do carrinho salvo no navegador, então um carrinho editado à mão não altera o valor do pedido.
- Entrega com regras de frete (taxa fixa, frete grátis acima de um valor e pedido mínimo) e preenchimento de endereço pelo CEP, via uma rota própria que consulta o ViaCEP e guarda o resultado em cache.
- Ficha técnica dos produtos: ingredientes, alérgenos, conservação e tabela nutricional no padrão da ANVISA, com preenchimento assistido pelo código de barras, consultando o Open Food Facts por uma rota protegida.
- Painel administrativo com login (Supabase Auth): dashboard que destaca produtos que precisam de atenção, cadastro e edição de produtos e categorias, e upload de foto que é reduzida e convertida para WebP no navegador antes de ir para o Supabase Storage.
- Catálogo no Postgres com cache no Next.js e revalidação por tag, de modo que uma edição no painel aparece na vitrine sem novo deploy. Há também um endpoint protegido por segredo para limpar o cache depois de alterações feitas direto no banco.
- SEO local e páginas institucionais: sitemap, robots, dados estruturados schema.org do tipo GroceryStore (endereço, coordenadas e horários), indicador de loja aberta ou fechada, e páginas de Sobre, Dúvidas frequentes, Prazo de entrega, Trocas e devoluções e Privacidade.
- Segurança: Content Security Policy restritiva, HSTS, bloqueio de iframes e Permissions-Policy. Nas ações do painel a sessão é verificada no servidor a cada chamada, e não só no redirecionamento de tela.
Destaque: Painel admin com Supabase Auth · cache com revalidação sob demanda · SEO local (schema.org)
Tecnologias e papel de cada uma
- Next.js
- App Router com páginas estáticas, Server Actions do painel e rotas de API para CEP, código de barras e revalidação.
- Supabase
- Postgres para produtos e categorias, Auth para o painel e Storage para as fotos, com @supabase/ssr.
- Zustand
- Estado do carrinho, persistido no localStorage.
- Tailwind CSS
- Interface da vitrine e do painel, com componentes shadcn/ui sobre Base UI.
- Framer Motion
- Micro-interações da vitrine.