BMW Group | CTW
O carrinho e a fundação da BMW Motorrad na loja do BMW Group
Fullstack numa plataforma de e-commerce de alto tráfego para BMW, MINI e BMW Motorrad, no ar em mais de 30 países. Feito presencialmente em Lisboa.
Ver a loja da BMW Motorrad no ar- Papel
- Desenvolvedor fullstack
- Período
- jun. de 2022 – jul. de 2023
- marcas numa plataforma, Motorrad incluída
- 3
- países
- 30+
- visitas por dia, segundo o Adobe Analytics
- 40 mil
Experimente
Informe um VIN de exemplo para identificar o veículo e ver quais peças servem, navegue pelos equipamentos da BMW Motorrad com tamanhos, monte o carrinho e finalize. As requisições vão para Lambdas simuladas; produtos, VINs e preços são fictícios.
Informe o VIN para ver quais peças servem.
Loja BMW Motorrad
Preços com IVA incluído- Masculino-40%Jaqueta rally impermeável
705,60 €
1.176,00 € - UnissexLuvas adventure
179,00 €
- Feminino-40%Camiseta com logo
23,40 €
39,00 €
Preço riscado: o menor preço nos 30 dias antes do desconto.
Carrinho (0)
Seu carrinho está vazio. Adicione um serviço, uma peça ou um equipamento.
- Subtotal
- 0,00 €
- IVA de 19% incluído
- 0,00 €
- Total
- 0,00 €
Chamadas à API, atendidas por Lambdas simuladas
Por trás da loja: o importador de catálogo
Produtos, filtros e concessionárias chegam à loja por uma importação de CSV na AWS. Escolha um arquivo e acompanhe cada etapa; a segunda linha é a loja lendo o que foi importado.
Importação
- CSV Importerplataforma
- AkamaiDNS
- Amazon S3guarda o CSV
- AWS Lambdavalida cada campo
- Validado?
- Secrets Managerchaves da API
- Servidorrequisições HTTP
- commercetoolsprodutos, filtros, concessionárias
- Banco
X-Ray e CloudWatch registram cada etapa da importação, validação e mapeamento
Loja
- Next.js SSRloja
- AWS Lambdacatálogo
- Servidor
- commercetools
- Banco
- Next.js CSRo que o cliente vê
Escolha um arquivo e importe.
Logs
O problema
Clientes da BMW e da MINI precisavam de um lugar só para comprar serviços digitais e peças e agendar manutenção e reparos, com um carrinho que funcionasse igual em todo mercado.
Aí vinha uma terceira marca: a BMW Motorrad precisava da própria loja, na mesma plataforma, sem duplicar o código.
Tudo isso roda em mais de 30 países, então cada preço, linha de imposto e data precisa seguir o mercado, com alto tráfego.
O que construí
- O carrinho: adicionar serviços, peças e equipamentos, mudar quantidades e os totais, impostos e moeda de cada mercado, do front em React e Next.js até o back em Node.js e AWS Lambda.
- A fundação da BMW Motorrad na plataforma, ao lado de BMW e MINI: a loja de equipamentos e vestuário, com tamanhos e preços promocionais, e a infraestrutura na AWS por trás dela.
- O seletor de veículo: o cliente informa o VIN, o veículo é identificado e a loja oferece só as peças que servem nele.
- A loja digital de serviços e peças, o fluxo de agendamento de manutenção e reparos e testes com Jest numa plataforma com cerca de 40 mil visitas por dia.
- Um importador de CSV na AWS para produtos, filtros e concessionárias: o arquivo chega ao S3 por trás do Akamai, uma Lambda valida cada campo, as credenciais vêm do Secrets Manager, os dados vão para o commercetools, e X-Ray e CloudWatch registram cada etapa.
Decisões
- Uma plataforma, três marcas
- BMW, MINI e BMW Motorrad compartilham a loja e o carrinho; cada marca traz o próprio catálogo e visual, não o próprio código.
- Começar pelo veículo
- O VIN identifica exatamente o carro ou a moto, então o cliente não fica na dúvida se a peça serve.
- O mercado decide os números
- Moeda, imposto, regras de preço promocional e formato de data vêm do mercado, então o mesmo carrinho fica certo na Alemanha, no Reino Unido ou no Japão.
Stack
- React
- Next.js
- Node.js
- AWS Lambda
- Amazon S3
- Secrets Manager
- CloudWatch
- commercetools
- Akamai
- Jest