API de listagem dos produtos LuizaLabs

Por meio deste serviço, os clientes Magazine Luiza conseguirão adicionar os produtos favoritos em uma lista.

🚀 Começando

Antes de começar, você vai precisar ter instalado em sua máquina as seguintes ferramentas: Git, Node.js. Além disto é bom ter um editor para trabalhar com o código como VSCode

📋 Pré-requisitos

As seguintes ferramentas foram usadas na construção do projeto:

🔧 Instalação

# Clone este repositório
$ git clone https://github.com/gabrielhsantos/productListAPI.git

# Acesse a pasta do projeto no terminal/cmd
$ cd productListAPI

# Instale as dependências
$ npm install

Na raiz do projeto, existe o arquivo env-example.txt, nele contém as variáveis que serão utilizadas no projeto, copie seu conteúdo.

Crie um arquivo também na raiz, com nome .env e cole as variáveis dentro.

O preenchimento dessas variáveis são obrigatórias, então segue um exemplo de uso:

VARIÁVEL VALOR
API_PORT 3001
DB_PORT 5432
DB_USER postgres
DB_DIALECT postgres
DB_TIMEZONE UTC
DB_LOGGING false
DB_SCHEMA public
DB client_list
DB_HOST localhost
DB_PASSWORD postgres
LUIZA_LABS_URL http://challenge-api.luizalabs.com/api
JWT_SECRET #LuizaLabsChallenge@GabrielSantos
SWAGGER_HOST localhost:3001/api
SWAGGER_SERVER http://localhost:3001/api

Observação: Os endpoints precisam do header Authorization e para facilitar a criação desse header, pode-se utilizar do site jwt.io inserindo o mesmo JWT_SECRET definido a cima e com o seguinte payload:

{
  "sub": "avaliadorLuizaLabs",
  "iat": 1516239022
}

🎲 Rodando o Back End (servidor)

# Crie o banco de dados luizaLabs
$ npm run db:create

# Execute as migrations
$ npm run db:migrate

# Execute a aplicação
$ npm start

# O servidor inciará na porta:3001 - acesse <http://localhost:3001> (ou a porta que foi definida no arquivo .env)

⚙️ Executando os testes

Para rodar os testes, basta utilizar este comando via terminal/cmd:

$ npm test

Observação: O Coverage não está em 100%, pois os testes foram feitos apenas em cima da integração com o endpoint do próprio desafio: LuizaLabsChallenge

📦 Documentação

Um arquivo com extensão .json se encontra na pasta: src/config/docs.

O mesmo pode ser importado dentro do Postman, para facilitar o acesso aos endpoints.

Também é possível acessar a documentação da api pelo endpoint /doc com o servidor rodando.