/dreamscape-final-project

Smart Suggestion app for Vtex (Front and Backend).

Primary LanguageTypeScriptThe UnlicenseUnlicense


Programa de Capacitação:


Idealizadores:

   

Patrocinadores:

       

Tecnologias:


Hiring Coders #3

O Hiring Coders é um programa de capacitação gratuito e sem pré-requisitos para ensinar programação.
Atualmente encontra-se na terceira edição, onde foram disponibilizadas 15 mil bolsas de estudos com certificações.

A fase final é composta por 60 finalistas, divididos em 6 Casas (Grupos), formando equipes de 10 alunos que realizam o Desafio Final.


Nós somos a equipe DreamScape

🔸 Alessia Casado
🔸 Amanda Almeida
🔸 Arthur Candido
🔸 Ciro Carvalho
🔸 Michel Negrão
🔸 Phelipe Lima
🔸 Tiago Feitoza
🔸 Victor Evangelista


Sumário

🔹 Desafio Final

🔹 Projeto

🔹 Front-End

🔹 Back-End e Banco de Dados

🔹 Instruções de Uso

🔹 Agradecimentos


💥 Desafio Final 💥

Cenário

João é dono de uma loja que vende roupas e acessórios.

  • A loja possui uma grande base de pedidos, que em sua maioria possui apenas 2 itens;
  • João quer sugerir produtos que sejam comuns na compra;
  • A combinação deve permitir a mudança do carrinho de compras para que não seja enquadrado como venda casada;

Atualmente João entra no OMS da VTEX e navega nos pedidos para entender o perfil de compra dos consumidores, em alguns dos casos ele percebeu que a calça jeans e a camiseta branca são uma combinação comum e por isso resolveu montar uma sugestão de venda.

  • A sugestão de venda fez com que o consumidor já inicie o carrinho com os itens da combinação, agilizando a compra e criando oportunidade para que o comprador adicione mais itens ao carrinho.

Objetivo

Desenvolver uma funcionalidade que disponibilize, de forma automatizada, sugestões de itens combinados com base no histórico de vendas da loja.


💻 Projeto 💻

Resumo do Projeto

Sugestões Inteligentes é uma aplicação desenvolvida para disponibilizar, de forma automatizada, sugestões de itens combinados com base no perfil de vendas da loja, usando a regra de combinações mais vendidas.

A aplicação conta com uma página administrativa que apresenta as sugestões para o lojista, onde ele pode gerenciá-las usando os menus de opções.

Na página de cada produto, as sugestões aprovadas pelo lojista são apresentadas para o cliente, conforme o produto que está sendo visualizado. O cliente pode usufruir desse recurso adicionando as combinações diretamente ao carrinho de compras, onde ele pode remover itens das combinações.

Meios de Comunicação

  • Gather: comunicação síncrona - ambiente de comunicação primário (áudio e vídeo).
  • Slack: comunicação assíncrona - ambiente de comunicação secundário.
  • Whimsical: quadro branco - ambiente de planejamento e organização de tarefas.

Organização das Tarefas

  • WHIMSICAL - Workspace (Link)
    • Resumos;
    • Lista de Tarefas;
    • Fluxograma de Desenvolvimento;
    • Arquitetura do Projeto;
    • Geração e Distribuição de Tarefas;
    • Materiais de Referência;
    • Quadro de Dúvidas;
    • Quadro de Comunicação;
    • Datas Importantes;
    • Links Importantes;
    • Documentações de Uso.

Fluxo de Desenvolvimento (Estratégico)

  • Desenvolvimento de um workspace VTEX IO funcional e com boa experiência de navegação;
  • Construção de um tema próprio e responsivo;
  • Criação de SKUs;
  • Leitura do histórico de vendas da loja;
  • Monitoramento de novas vendas;
  • Processamento de combinações de SKUs vendidas;
  • Armazenamento de dados processados na AWS;
  • Disponibilização da lista de combinações para o lojista (Administrativo da Loja);

Extras

  • Apresentação das combinações para aprovação do lojista no Admin da Loja;
  • Disponibilização das combinações aprovadas para os consumidores em um componente React na Página de Produto;
  • Automação da criação de URLs de Carrinho que adiciona múltiplos itens da combinação diretamente ao carrinho;
  • O cliente pode adicionar cada combinação diretamente ao carrinho e dentro carrinho pode remover itens dessa combinação.

🎨 Front-End 🎨

Administrativo da Loja (Gestão de Combinações) (Link - App) (Link - Menu)

  • Apresentação da lista de combinações atualizada e ordenada pelo maior número de ocorrências.
    • Renderização de detalhes das SKUs que compõem cada combinação:

      • Imagem do produto;
      • Nome do produto;
      • Total de ocorrências da combinação;
      • Status (ativo ou inativo).
    • Ferramentas:

      • Opção de seleção do total de combinações que devem aparecer por página;
      • Botões para avançar e recuar páginas;
      • Botão para alternar o status de apresentação de cada combinação (ativo ou inativo);
      • Botão para alterar a espessura da linha;
      • Botão para alternar a visibilidade das colunas (EXIBE TODAS/ESCONDE TODAS/Combinação/Ocorrência/Ativo).
      • Botão para deletar combinações;
      • Campo para buscar combinações por nome ou ID da SKU;
      • Filtro de dados por Ativo/Inativo/Todos;

Página de produto (Experiência de Compra)

  • Disponibilização das combinações aprovadas para os clientes;
    • Na página de cada produto são apresentadas sugestões de combinações aprovadas pelo lojista;
    • O consumidor pode interagir com as sugestões adicionando combinações ao carrinho;
    • No carrinho o consumidor pode remover as SKUs das combinações.

🦾 Back-End e Banco de Dados 💾

DREAMSCAPE

APP/API dreamscape.backendapi@0.x (Link - App)

  • Aplicativo criado pela equipe DreamScape para conectar o Workspace da VTEX IO com o Back-End e o Banco de Dados na AWS.

***

VTEX IO

APIs implementadas no projeto

  • Master Data V2 (Data Entities) - Busca de pedidos (orders)
  • Orders Feed V3 (Get Order) - Coleta de informações dos pedidos
  • Orders Broadcast (OrderID) - Ouvinte de novos pedidos

***

AWS

DynamoDB AWS

  • Banco de dados não relacional, criado para o armazenamento das combinações processadas, que são consumidas pelo Administrativo da Loja e pela Página de Produto.
  • Endpoints:
  • GET allCombination - retorna todas as combinações
  • GET combinationsBySkuId - retorna combinações que correspondem com o SkuID passado
  • GET occurrencesMoreThan - retorna skus com ocorrências maiores que
  • GET oneCombination - retorna combinações por combination
  • GET oneCombinationByCombinationId - retorna uma combinação por combination e combinationId
  • POST combination - cria uma combinação por skuId
  • POST skuToCombinate - cria uma lista de combinações
  • PUT combinationById - altera o total de ocorrências e o status (showInShop) da combinação
  • DEL combinationById - deleta a combinação por skuId

API Gateway

  • Construído para funcionar como router para o Lambda Functions.

Lambda Functions

  • Usado para implementar funções de CRUD que interagem com o banco de dados DynamoDB (processamento, consulta e edição de dados).

  • Função de Processamento de Dados:

    • Recebe o histórico de ordens e novas ordens;
      • Para cada ordem, verifica se a ordem foi paga e contém mais de uma SKU:
      • Processa todas as possíveis combinações de itens(SKUs) dentro de cada ordem;
      • Soma o total de ocorrências de cada combinação processada;
      • Verifica se a combinação já existe no banco de dados DynamoDB:
        • Se a combinação já existir, atualiza a data de criação e o total de ocorrências no DynamoDB;
        • Se a combinação não existir, grava a nova combinação no DynamoBD com os seguintes campos:
        combination: string[] (partition Key)
        combinationId: uuid (sort Key)
        orderDate: 'yyyy-mm-dd'
        createDate: 'yyyy-mm-dd'
        occurrences: integer
        showInShop(default: false): boolean
        

📕 Instruções de Uso 📕

Pré-Requisitos

  • Ter uma conta VTEX IO
  • Ter instalado:
    • Git
    • Node.js;
    • VTEX Toolbelt.

Documentação de Uso

Sistema de Sugestões - Administrador

  • Clone o projeto github para uma máquina local;
  • git clone https://github.com/emenni/dreamscape-final-project/
  • Abra o terminal de comandos de sua preferência
  • Dentro do terminal acesse a raiz da pasta do projeto baixado
  • Faça o login na sua conta VTEX:
  • vtex login dreamscape

Obs.: uma página de login deve abrir no seu navegador padrão, entrar com os dados de login e senha da sua conta VTEX

  • Acesse o seu workspace:
  • vtex use <workspace-name>
  • Caso esteja criando um novo workspace, confirme a criação:
  • Digite y e pressione a tecla Enter

Obs.: se tudo ocorreu certo, o endereço web do seu workspace será impresso no console do terminal.

  • Instale os Apps DreamScape:
  • vtex install dreamscape.backendapi@0.x
  • vtex install dreamscape.dreamscape@0.x
  • Acesse a página do seu workspace pelo seu navegador;
  • vtex browse
  • Crie uma conta para acessar a loja;
  • Faça o login na loja;
  • Realize uma compra com vários produtos (esse processo é genérico, não precisa de um pagamento real;
  • Acesse a aba Admin > Promoções > Soluções Inteligentes;
  • Todas as combinações possíveis devem aparecer.
  • Ative uma combinação clicando no botão Ativar

Sistema de Sugestões - Cliente

  • Retorne para a Workspace da loja, acesse a página de um dos produtos que comprou, e verifique na parte inferior da tela se foram renderizadas as combinações.
  • Clique no botão de carrinho para adicionar a combinação ao carrinho;
  • Dentro do carrinho você pode remover itens da combinação.

APIs na AWS

Caso queira testar chamadas na API, você pode utilizar os nossos modelos salvos, que estão disponibilizados no POSTMAN.

Acesse o projeto no Postman: (Link)

  • Crie uma conta POSTMAN, pode ser uma versão gratuita.
  • Faça o fork do projeto;
  • Substitua a chave de autenticação.
  • Agora basta enviar as requisições seguindo os padrões existentes

Obs.: A exclusão total ou parcial de dados do banco de dados via chamada direta no endpoint da API não é possível.

Para excluir dados:

  • É permitido excluir combinações diretamente pelo admin da loja (Produtos > Sugestões Inteligentes)

Para construir ou reconstruir a base de dados com o histórico de vendas, execute a ferramenta rebase:

  • Acesse o Admin da Loja (Link)
  • Siga para:
    • Configurações da Conta > Meus Aplicativos
  • Busque por:
    • BackendApi app
  • Click no botão "Salvar"

🙏 Agradecimentos 🤝

Agradecemos especiais aos:

  • Idealizadores e Realizadores
    • VTEX
      • Time da VTEX
      • Lalá
      • Luciano Santos
      • Natália Molena
    • GAMA ACADEMY
      • Time da Gama
      • Gabi
      • Tio Bruce
      • Tio Fred
      • Yellow Belts
  • Patrocinadores:
    • ACCT
    • Lebiscuit
    • AWS
  • Mentores
    • Time de Mentores das Lives
    • Time de Mentores dos Desafios
    • Zorza
    • Fernanda
    • Bernardo
    • Reginaldo Oliveira
    • Ana Baptistão
  • Palestrantes
  • Alunos

Agradecemos também a toda a rede de colaboração que fez o Hiring Coders #3 acontecer e ser um sucesso. 🎉🎊🎇🥳🎆🎈🚀


Este desafio foi proposto pela VTEX em parceria com a Gama Academy durante a etapa final do Hiring Coders #3

🐝🐿🐘🐙🦅🦔

© DreamScape 2022