Caso de estudo · Retalho técnico

Quando o plano inicial não sobrevive ao primeiro contacto: a história de uma loja online que se reinventou três vezes

Há um princípio em engenharia que diz que nenhum plano sobrevive intacto ao primeiro contacto com a realidade. Este projeto foi a confirmação prática dessa frase — e também uma demonstração daquilo que defendemos como verdadeira competência técnica.

A loja, ao vivo

Navega pelo produto real. Cada ponto numerado tem a engenharia por trás.

Cinco ecrãs, um sistema. Da montra ao painel de administração — cada detalhe é uma decisão de engenharia.

loja.cliente.pt
produção
InícioLojaProjetosSobreContacto
PT Entrar
Segurança & iluminação profissional
O seu projeto, protegido de ponta a ponta
Instalação e venda de sistemas de segurança, videovigilância e iluminação, com stock real e entrega rápida.
Pedir orçamento Ver loja
Marcas líderes de mercado
Documentação técnica incluída
Instaladores certificados

Neste ecrã

    A história

    Três viragens. Três decisões de engenharia.

    O pedido inicial parecia direto: uma loja online sincronizada com o CSV do fornecedor. Na prática, foram três viragens consecutivas — e cada uma tornou-se uma das funcionalidades de que mais nos orgulhamos.

    1. O cliente e o desafio

      Um revendedor autorizado de iluminação profissional e sistemas de segurança queria uma loja completa, sincronizada automaticamente com o catálogo do fornecedor. O fornecedor disponibilizava um endpoint com um ficheiro CSV de toda a informação dos produtos. Em teoria, era ler o ficheiro, mapear os campos, e ter a loja a funcionar. Na prática, nada disto sobreviveu ao primeiro contacto com a realidade.

    2. 1ª viragem — o limite da plataforma

      Começámos pela escolha que qualquer equipa experiente faria: Shopify, com a Storefront API. Avançámos semanas com bons resultados. Foi ao integrar o CSV a sério que o problema apareceu na sua dimensão real — campos profundamente nichados (specifications, params, short_description_html, related_products) para produtos técnicos com folhas de especificação. O modelo de dados do Shopify não tem onde os pôr. Tomámos a decisão difícil mas correta: parar, reavaliar e reconstruir.

    3. A reconstrução — uma stack desenhada para o problema

      Reconstruímos de raiz com Next.js, PostgreSQL e Stripe. Cada campo do CSV passou a ter o seu lugar próprio na base de dados, com o tipo certo, os índices certos e renderização limpa: especificações tornaram-se tabelas navegáveis, imagens secundárias ganharam galeria, produtos relacionados passaram a relações reais. Em paralelo, construímos uma dashboard administrativa custom — o cliente gere catálogo, encomendas, descontos e, o mais valorizado, edita o hero, serviços e testemunhos da homepage sem qualquer intervenção técnica nossa.

    4. 2ª viragem — o que faltava no CSV

      Com a stack nova a funcionar, descobrimos que o CSV não continha manuais, fichas técnicas, firmware nem software. Para uma loja de iluminação profissional e segurança, isto não é um pormenor — é a razão pela qual um instalador escolhe um revendedor. Construímos uma camada de integração adicional, fora do escopo inicial, que enriquece cada produto com os recursos descarregáveis do fornecedor, sempre atualizados e sem manutenção manual. Hoje, é uma das funcionalidades mais utilizadas da loja.

    5. 3ª viragem — reconstruir a árvore de categorias

      O CSV oferecia apenas dois níveis de categorização, enquanto o catálogo real tinha uma hierarquia muito mais profunda. Navegar centenas de produtos técnicos com dois níveis é uma experiência indigna de uma operação séria. Construímos um sistema de descoberta que, em batches otimizados, consulta o endpoint de produto, extrai os breadcrumbs completos e reconstrói a árvore real na nossa base de dados — o catálogo inteiro em menos de cinco minutos. Algo impossível para quem depende do mesmo feed CSV.

    6. A camada que cose tudo — sincronização inteligente

      Tudo assenta num orquestrador que corre de meia em meia hora: descarrega o CSV mais recente, executa a descoberta de categorias e atualiza os recursos — mas só toca no que efetivamente mudou. Um mecanismo de diferenciação granular compara cada produto com o seu estado anterior e atua cirurgicamente. O ganho é triplo: writes mínimos, logs limpos e auditáveis, e zero invalidações de cache desnecessárias. Uma loja que está sempre sincronizada e, ao mesmo tempo, se sente sempre instantânea.

    O sistema, de 30 em 30 minutos

    A engenharia silenciosa que substitui trabalho manual

    1. Download do CSV

      ~10.000 linhas do endpoint do fornecedor

    2. Diff granular

      Compara cada produto — atua só no que mudou

    3. Descoberta de categorias

      Breadcrumbs → árvore profunda, em menos de 5 minutos

    4. Enriquecimento

      Manuais, firmware e software por produto

    5. Loja em produção

      PostgreSQL → frontend, sem cache stale

    Ciclo automático a cada 30 minutos · zero manutenção manual do cliente

    10.000
    produtos sincronizados automaticamente
    30 min
    ciclo de sincronização com o fornecedor
    < 5 min
    reconstrução da árvore de categorias completa
    3
    viragens que se tornaram as features mais fortes

    Next.js 15 · PostgreSQL · Stripe · better-auth · next-intl · PT/EN · Cloudflare R2 · Cron de sincronização

    O que fica

    Integrar sistemas que não foram desenhados para falar uns com os outros. Transformar fricção em sistema.

    Cada uma das três viragens poderia ter ditado o fracasso do projeto. Em vez disso, cada uma tornou-se uma das funcionalidades de que mais nos orgulhamos. É isso que fazemos na GM Flow.

    Uma conversa de 30 minutos chega para saber onde a IA e o código fazem diferença real.