Desafio Omni Channel

Serviço HTTP resolvendo a funcionalidade de Omni Channel para um e-commerce

Tabela de conteúdos
  1. Sobre o Projeto
  2. Instruções gerais
  3. Utilizando a API
  4. Equipe

📔 Sobre o projeto

Esse projeto tem como objetivo o desenvolvimento de um serviço HTTP que resolve a funcionalidade de um Omni Channel do Cliente, ou seja, adicionar ou remover produtos do carrinho de compras, bem como consultar a lista dos produtos disponíveis e seu histórico de compras.

Tecnologias Utilizadas

O projeto foi criado usando as tecnologias:

  • [JavaScript]
  • [Node.Js]
  • [PostgreSQL]
  • [Swagger]

Regras de Negócio

  • Cada cliente deve ter um e-mail cadastrado;
  • O cliente pode adicionar ou remover produtos de seu carrinho e finalizar a compra;
  • O cliente só poderá comprar UM produto por tipo;
  • Ao final da compra o status se altera de carrinho para realizada e uma loja é associada ao pedido;
  • A loja onde a compra foi retirada deve atualizar o status de realizada para retirada;
  • O cliente pode consultar todos os produtos e lojas disponíveis, o carrinho atualizado e o histórico de pedidos;
  • Somente o adminstrador tem acesso à lista de clientes.

📖 Instruções Gerais

A seguir estão as instruções para a instalação, configuração e uso da API do projeto.

Instalando

  1. Clonar o repositório
   git clone https://github.com/ANNEBORTOLI/luizaCode-projetoFinal.git
  1. Instalando os pacotes
    npm install
  1. Rodar migrations
    npm run migrate

-OU-

    npx sequelize db:migrate
  1. Rodar seeders
    npm run seed

-OU-

    npx sequelize db:seed:all
  1. Executar o Swagger
    npm run swagger

-OU-

    node src/swagger.js
  1. Executar a API localmente
    npm run dev

Configurando

  1. Criar um arquivo na raiz do projeto, chamado [.env].

  2. Copiar o conteúdo do arquivo [.env.example] e setar com as configurações do seu banco de dados e a URL da aplicação.

Configuração do banco

  1. Em caso de conflito de porta, alterar em [ 📂 luizaCode-projetoFinal\bin\www ] na linha 15:
var port = normalizePort(process.env.PORT || '3000') //3000 para uma de sua escolha

🔌 Utilizando a API

Endpoints

O usuário tem acesso aos seguintes endpoints:

  • Cadastro
  • Login
  • carrinho
  • Produtos
  • Lojas

Endpoints Clientes

Todos podem acessar a lista de produtos e lojas:

Endpoints globais

Apenas o adminstrador tem acesso aos endpoints:

  • Retirada de produtos
  • Lista de clientes

📌 Para fazer uso das rotas administrativas basta logar com o usuário já inserido no Banco de Dados.

{ email: admin@email.com, senha: 12345 }

Endpoints Administrador

Rodando aplicação localmente com Swagger

No navegador, digitar localhost:3000/docs. Se necessário, trocar 3000 pela porta configurada.

🚺 Equipe