Wergrauf — loja de hidráulica
O cliente mudou de marca e quis elevar o nível da loja. Para a nova marca, montei do zero uma loja de materiais hidráulicos em stack puro — sem CMS, sem frameworks e sem MySQL. Os dados dos produtos ficam em arquivos JSON que sincronizam automaticamente com o Google Sheets. Ciclo completo: catálogo com 9 categorias, páginas de produto, carrinho, checkout e pagamento online, avaliações com moderação, painel administrativo próprio, analytics de e-commerce e SEO. O site mantém 90–100 pontos no PageSpeed Insights no desktop e no mobile.
Arquitetura
Uma arquitetura deliberadamente leve e “sem banco”: em vez de CMS e SQL, armazenamento em arquivos e uma integração com o Google Sheets funcionando como painel de conteúdo.
- A fonte de dados é a API do Google Sheets: uma planilha, uma aba por categoria. Um script PHP de sincronização puxa os dados pela API e salva em JSON — o responsável pelo conteúdo mantém o mix em uma planilha familiar e o site atualiza com um clique.
- Localização das imagens: durante a sincronização, as fotos externas dos produtos são baixadas para o servidor, convertidas em WebP e renomeadas pelo slug. Idempotente, com fallback em caso de falha.
- Uma camada de overrides: edições manuais feitas no painel (meta tags, ocultar produtos, ordenação) são aplicadas sobre os dados da planilha — a planilha continua sendo a fonte da verdade, mas qualquer campo pode ser sobrescrito localmente.
- Renderização do catálogo no servidor para linkagem interna correta e SEO; o JS no cliente cuida apenas dos filtros e da ordenação.
Principais funcionalidades
Catálogo e produtos: 9 categorias, um único template no servidor para a página de produto e para o catálogo; páginas de produto com galeria, troca de fotos, especificações e blocos “produtos similares” e “desta coleção”; filtragem no cliente por preço (slider duplo), modelo, cor e coleção, além de ordenação.
Carrinho, pedido, pagamento: carrinho no cliente (localStorage), checkout e compra em um clique, pagamento online via Ozon SBP, página de status do pedido com polling do pagamento e notificações de novos pedidos no Telegram por bot.
Avaliações: formulário com upload de até 4 fotos e três camadas de proteção antispam (honeypot + verificação do tempo de preenchimento + captcha aritmético), armazenamento em JSON e moderação pelo painel.
Assinatura de novidades que guarda a base de inscritos e a exibe no painel.
Painel administrativo próprio
Totalmente feito à mão, com autenticação por sessões PHP.
- Dashboard com estatísticas por categoria.
- Sincronização manual com o Google Sheets em um clique, com log dos resultados.
- Visualização e edição dos produtos de cada categoria, incluindo meta tags (title/description) para SEO.
- Adição de produtos manuais sobre os sincronizados e edição do conteúdo da página inicial.
- Moderação de avaliações, lista de inscritos e log de sincronizações.
- Ferramentas de serviço: otimização de imagens em lote e limpeza de lixo do sistema.
Performance (PageSpeed Insights)
O site foi levado a 90–100 pontos de Performance no desktop e no mobile.
- Tamanhos de imagem responsivos: para cada foto de produto a sincronização gera tamanhos derivados (página de produto ~600px, miniatura ~160px) além do original usado na galeria — as imagens de produto ficaram 65–70% mais leves e as miniaturas sob a foto principal caíram de ~65 KB para ~2 KB.
- WebP em tudo — produtos e logotipos (via <picture> com fallback).
- Cumulative Layout Shift eliminado: width/height explícitos em todas as imagens.
- Priorização de carregamento: fetchpriority na imagem principal (LCP), lazy-load no restante, preconnect ao domínio de analytics e defer nos scripts.
- Contraste, títulos e fontes ajustados para o mobile.
SEO
- Schema.org / JSON-LD: Product + Offer (disponibilidade dinâmica e priceValidUntil), BreadcrumbList nas páginas de produto, Organization + WebSite na home.
- URLs canônicas, títulos keyword-first, hierarquia de headings correta, landmarks <main> e marcação semântica.
- sitemap.xml e robots.txt gerados automaticamente.
- Um feed YML para o Yandex.Direct (campanhas de produto, smart banners) que se atualiza sozinho após cada sincronização do catálogo.
- Acessibilidade: rótulos ARIA, contraste conforme WCAG e navegação acessível.
Analytics
Analytics de e-commerce completo no Yandex.Metrica: metas e dataLayer nas ações-chave (adicionar ao carrinho, pedido, compra em um clique, pagamento aprovado, assinatura), proteção contra disparo duplicado de metas, webvisor e clickmap. As compras são rastreadas com proteção contra duplicidade durante o polling do pagamento.
Por que o projeto é interessante
- Dependência zero de infraestrutura pesada: sem CMS, sem SQL, sem framework — e ainda assim uma loja completa, com pagamento, analytics e painel.
- Google Sheets como back-end de conteúdo — uma integração pouco convencional, mas confortável para o cliente.
- Performance como prioridade consciente: a otimização de imagens está embutida no pipeline de dados, não foi acoplada depois.
- Ciclo completo por uma única pessoa: arquitetura, back-end, front-end, integrações, SEO, deploy e manutenção.