/omnigirls

Criação de um OMNIChannel - Luiza Code 3a Edição - DESAFIO FINAL

Primary LanguageJavaScript

OMNIChannel - Desafio Final Luiza Code

Uma das funcionalidades mais interessantes em um e-commerce é a Omni Channel. Ou seja, não há mais diferenças entre lojas físicas ou na web. O consumidor pode procurar o produto em uma loja física e comprar pela internet ou vice-versa. Basicamente, o cliente Omni Channel é aquele que utiliza de todos os canais simultaneamente, cruzando compras em ambientes físicos e online.

Objetivo do projeto

O objetivo desse projeto é o desenvolvimento de um serviço HTTP resolvendo a funcionalidade de Omni Channel do cliente. Esse serviço fará parte de uma plataforma construída em uma arquitetura baseada em micro-serviços.

índice


📝 Proposta

A proposta desse projeto é desenvolver um software para demonstrar os nossos conhecimentos adquiridos durante a aceleração em Node.js

NPM Version Build Status Downloads Stats

Tecnologias utilizadas

  • Noje.js
  • Sequelize - ORM
  • Seeders
  • Postgres
  • Express
  • JsonWebtoken
  • Swagger
  • Insomnia
  • API
  • BCrypt
  • Yup
  • MVC

✅ Requisitos funcionais (obrigatórios)

  • Adicionar um produto na lista da compra da cliente;
  • Remover um produto da lista da compra da cliente;
  • Consultar todos os produtos disponíveis;
  • Consultar todas as compras realizadas da cliente.

✅ Requisitos não funcionais

  • Logs;
  • Tratamento de exceção;
  • Autenticação/ Login da API;
  • Criação de sessão com token;
  • 🚧 Desenvolvimento futuro: Front-end da aplicação.

✅ Regras de Negócio

  • Cada cliente/funcionário poderá ter somente um cadastro, validado por e-mail;

  • É gerado uma sessão via token, com prazo de validade para cada usuário logado no sistema;

  • O acesso é limitado aos funcionários para:

    • Cadastro/Atualização/Exclusão de lojas;
    • Cadastro/Atualização/Exclusão de produtos;
    • Atualização de status do pedido para "RETIRADO";
    • Consulta de todos os pedidos dos clientes;
  • O acesso é limitado aos clientes para:

    • Cadastro/Atualização de pedido;
    • Adicionar/remover produtos de seu carrinho e finalizar a compra;
    • Criação/atualização de agendamento do pedido;
    • Consulta dos itens e status do pedido;
    • Consulta do histórico dos pedidos;
  • O cliente só poderá comprar UM produto de cada tipo;

  • Na inicialização de uma compra, é verificado se o cliente já possui um pedido com status "EM ANDAMENTO";

  • Se o cliente não tiver nenhum pedido é criado automaticamente um novo carrinho com status "EM ANDAMENTO";

  • Para finalizar o pedido, é necessário realizar o agendamento do mesmo;

  • Após realizar o agendamento o status é alterado para "REALIZADO", caracterizando a finalização do pedido e disponibilizando-o para retirada;

  • A finalização do pedido gerará atualização do estoque/ baixa dos itens;

  • Após retirar o pedido em loja, o status do pedido é alterado para "RETIRADO", encerrando asssim toda a cadeia de compras OMNIChannel.

💻 UML

  • O modelo e documentação da regra de negócio do sistema foi realizado via diagrama UML (Unified Modeling Language), documentando assim as diversas fases do desenvolvimento de sistemas orientados a objetos e facilitando a compreensão da esquematização do sistema:

💻 Instalação

Essas instruções fornecerão uma cópia do projeto instalado e funcional para fins de desenvolvimento e testes.

1º Passo - Clonar o respositório

Comece clonando esse projeto para sua máquina local.

git clone https://github.com/evelynsantos/omnigirls.git
cd omnigirls

2º Passo - Instalando as dependências

Para instalar as dependências do projeto, digite o seguinte comando no terminal:

npm i

3º Passo - Criando database

Esse projeto foi criado utilizando ORM Sequelize/ Dialeto Postgres, utilizando o ElephantSQL. Sugerimos que crie uma conexão em https://customer.elephantsql.com/login

4º Passo - Configurar o ambiente

Para configurar o ambiente é necessário duplicar o arquivo .env.local e renomea-lo somente para .env.
Em seguida, altere as informações desse arquivo .env para as informações correspondentes a conexão do seu banco de dados

5º Passo - Criando as migrations do banco de dados

Para criar as migrations do banco de dados e já ter uma estrutra de relacionamento predefinidos, digite o seguinte comando no terminal:

npx sequelize-cli db:migrate

6º Passo - Criando os seeders do banco de dados

Para criar os seeders que é para deixar um padrão de preenchimento das tabelas com informações, digite o seguinte comando:

npx sequelize-cli db:seed:all

7º Passo - Executando a aplicação

Depois de tudo configurado basta digitar o seguinte comando no terminal:

npm run dev

🎬 Execução dos Endpoints

Acesso aos Endpoints via Swagger. O usuário tem acesso aos seguintes endpoints:

  • Cadastro
  • Produtos
  • Lojas
  • Carrinho
  • Agendamento

Cliente Endpoint.

  • AUTENTICAÇÃO



  • ADICIONAR PRODUTO



  • REMOVER ITEM DO CARRINHO



  • CONSULTAR TODOS OS PRODUTOS



  • CONSULTAR TODAS AS COMPRAS COM SWAGGER

Crédito dos .gifs a Ana Carvalho! Ficaram bem legais!


Contribuição

  1. Faça o fork do projeto (https://github.com/evelynsantos/omnigirls.git)
  2. Crie uma branch para sua modificação (git checkout -b feature/fooBar)
  3. Faça o commit (git commit -am 'Add some fooBar')
  4. Push (git push origin feature/fooBar)
  5. Crie um novo Pull Request

👨‍👩‍👧‍👦 Equipe de desevolvimento OMNIGirls

Ana Maria Carvalho

Ana Maria Carvalho
Evelyn Dias Santos

Evelyn Dias Santos
Keila Hadama

Keila Hadama
Julia Minagawa

Julia Minagawa
Pietra Santos

Pietra Santos


👨🏻‍🏫 Expressão de gratidão (Parcerias/Prof/Escola/Programa/Mentores...)