João Pedro Gaspar

RolandBoss

Duas marcas, dois domínios, um checkout só — o primeiro carrinho compartilhado entregue pela agência.

Cliente
Roland Brasil
Papel
Liderança técnica de squad · Front-end
Ano
2025
Stack
Shopify HydrogenRemixOxygenWeaverseTypeScript

O que foi meu

  1. 01A arquitetura do carrinho compartilhado: investiguei as opções e defendi um carrinho com um dono só, em vez de dois sincronizados, antes de qualquer código.
  2. 02A liderança do squad durante a construção: direção, destravar decisões, revisar o trabalho.
  3. 03A entrega contínua numa loja que não pode sair do ar: refação do header, agendamento de campanha no Weaverse, performance.
store.roland.com.br

1280 × 800

390 × 844

FIG. 1Duas vitrines em dois domínios, um carrinho só.store.roland.com.br0store.bossmusic.com.br0Storefront APIum carrinho só14API do Shopify16uma loja Shopify18checkout202 sites · 2 carrinhos · 2 checkoutsna sacola na horanormalmente: sacola vazia aquimesmo carrinho · 1 item1 checkout · 2 marcasum item some1 carrinho · 1 checkout · 2 marcasloja Roland10loja Boss12fronteira entre sites22descartado24pendente26
01 / 10

Problema ·Roland e Boss são duas lojas em dois sites. Normalmente, quem quer um teclado Roland e um pedal Boss teria dois carrinhos e pagaria duas vezes.

FIG. 1Duas vitrines em dois domínios, um carrinho só.

Quebre você mesmo a versão descartada

As duas arquiteturas, rodando no seu navegador. Com um carrinho, ordem e latência não importam. Com dois carrinhos sincronizados por snapshot, adicione nas duas lojas antes da sincronização chegar e veja os dois discordarem.

Simulação. Dados ilustrativos, mecanismo real.

A latência é simulada (350–1200 ms). A corrida não.

store.roland.com.brCarrinho 0
  • JUNO-D6
  • FP-30X
  • TD-07KV
store.bossmusic.com.brCarrinho 0
  • DS-1
  • RC-505mkII
  • KATANA-50

Carrinho · 14

vazio

— log de rede —

Contexto

Roland e Boss são marcas irmãs de equipamento musical, e operam lojas separadas no Brasil: store.roland.com.br e store.bossmusic.com.br. Duas storefronts headless em Shopify Hydrogen, servidas por uma única loja Shopify por baixo. O projeto chegou à minha squad como ongoing — manutenção e evolução contínua —, o que significa entregar features novas sem poder parar a loja para reescrever nada.

O problema técnico central

Duas marcas, dois domínios, um catálogo. Quem entra pela Roland atrás de um sintetizador e também quer um pedal Boss não deveria comprar duas vezes. E o Shopify por baixo é o mesmo — o carrinho poderia ser o mesmo. Quem diz que não é o navegador: a sessão que identifica o carrinho em store.roland.com.br simplesmente não existe em store.bossmusic.com.br. A fronteira não é de plataforma, é de domínio.

Era o primeiro carrinho compartilhado que a agência entregava. Não havia referência interna, nenhum “já fizemos assim da outra vez” — a arquitetura precisava ser investigada e defendida antes de virar código.

O que a squad construiu

  • Carrinho compartilhado com checkout únicoEm vez de manter dois carrinhos tentando se sincronizar, as duas storefronts conversam com um ponto de conexão comum, responsável por construir e manter um carrinho só. Adicionar item por qualquer uma das marcas alimenta o mesmo checkout.
  • Busca cruzada com PDP canônicaBuscar na Roland retorna o catálogo inteiro, das duas marcas. Clicar num resultado Boss leva direto à PDP no domínio da Boss — e vice-versa. O catálogo é um só; cada produto continua sendo mostrado na casa da sua marca.
  • Agendamento de campanha configurávelBanners e seções com janela de entrada e saída, construídos por nós e expostos como configuração no Weaverse. O time do cliente define quando a Black Friday sobe e quando ela cai, sem depender de deploy nosso.
  • Ongoing de verdadeRefação do header, evolução do sistema de banners e trabalho contínuo de performance, sempre sobre uma loja que não pode sair do ar.

Por que foi feito assim

  • Um carrinho, não dois sincronizadosA tentação era espelhar estado entre as duas storefronts. Sincronização entre réplicas é onde moram os bugs de corrida — item somem, quantidade diverge, e o erro só aparece em produção com dois dispositivos. Centralizar a construção do carrinho num ponto comum troca um problema distribuído por um problema de integração, que é muito mais fácil de testar e de explicar.
  • Catálogo único, navegação por marcaDuplicar produto por marca resolveria a busca em cinco minutos e criaria conteúdo duplicado, SEO canibalizado e dois lugares para atualizar preço. Cada produto tem um dono; a busca cruza a fronteira, a PDP canoniza no domínio certo.
  • Data de campanha é configuração, não deployCampanha muda de data na véspera — sempre. Toda feature sazonal nasceu com janela editável pelo cliente no Weaverse. Isso tira a agência do caminho crítico da operação e elimina uma classe inteira de emergência de véspera de feriado.
  • Liderar rendeu mais que codarPor ser o primeiro do tipo na casa, meu trabalho de maior alavancagem foi investigar as soluções, validar a arquitetura e conduzir o time até ela — não escrever as linhas. Passei mais tempo destravando decisão do que digitando, e a entrega foi melhor por isso.

Status

Em produção, em ongoing. As duas lojas estão no ar: abra store.roland.com.br e store.bossmusic.com.br e inspecione o carrinho você mesmo.

Próxima prancha · FIG. 2Integralmédica / Darkness →