Skip to content

duducp/service-luiza-labs-flask

Repository files navigation

Processo Seletivo LuizaLabs - 10/2019

Este serviço é responsável por armazenar quais são os produtos favoritos de um determinado cliente.

Todas as rotas são protegidas por um token JWT, este que deve ser obtido na rota de login.

Índice

  1. Requisitos
  2. Informações adicionais
  3. Configuração do ambiente
  4. Comandos úteis
  5. Tecnologias utilizadas
  6. Imagens

Requisitos

  • Python 3.7.6
  • Postgres
  • Redis

Informações adicionais

O arquivo .env.example serve para setar variáveis de ambiente em modo de desenvolvimento ou teste. Para que haja efeito deve-se renomear o arquivo para .env.

O banco de dados padrão para armazenamento dos dados é o postgres e redis.

Após fazer a configuração inicial, pode-se acessar as rotas do projeto pela URL http://localhost:5000/docs

Na documentação há uma rota /auth/register que deve ser usada para fazer o primeiro cadastro no sistema.

Após fazer o cadastro, deve-se utilizar a rota /auth/login para obter o token de acesso às demais rotas, este que deve ser injetado no header authorization.

Será gerado dois tokens (access_token e refresh_token). Para acessar as rotas é recomendado utilizar somente o access_token e caso o mesmo expire, pode-se utilizar o refresh_token para obter um novo token. Todos os dois tokens tem uma vida útil de 15 e 30 minutos respectivamente.

Configuração do ambiente

Iniciar ambiente virtual

python -m venv venv

Ativar ambiente virtual

- Linux
source venv/bin/activate

- Windows
venv\Scripts\activate

Instalar dependências

pip install -r requirements.txt

Após configurar os dados de conexão com o banco de dados, rodar o comando

flask config create-db luizalabs

Aplicar as migrations no banco de dados

flask db upgrade

Iniciar a aplicação

flask run

Acessar a documentação (não disponível para o modo de produção)

http://localhost:5000/docs

Rodar testes de TDD para obter taxa de coverage

flask commands coverage

Obs.: Antes de executar o comando acima verifique se a aplicação está apontada para o banco de teste

Comandos úteis

Rodar o lint para organização do código

flask commands lint

Rodar o teste de complexidade do código

flask commands complexity

Rodar testes de coverage

flask commands coverage

Criar um database no Postgres

flask config create-db NOME_DATABASE

Ver comandos do database

flask db

Ver todas as rotas da aplicação

flask routes

Rodar aplicação

flask run

Técnologias utilizadas

  • Python: linguagem de programação utilizada no desenvolvimento do serviço;
  • Postgres: banco de dados relacional utilizado para armazenar os dados;
  • Git: tecnologia para controle de versão do código;
  • Flask: micro-framework para gerenciamento web;
  • SQLAlchemy: biblioteca de objeto-relacional para manipulação de SQL;
  • Marshmallow: biblioteca para validação de dados de entrada e saída;
  • Restplus: biblioteca para criação da documentação das rotas da aplicação;
  • Requests: biblioteca para realização de chamadas em outros sites/api's;
  • Radon: biblioteca para verificar a complexidade dos códigos;
  • Pre-commit: biblioteca que define os padrões do PEP 8, quando é feito um commit;

Imagens

Alt text

About

Processo Seletivo Luiza Labs - 10/2019

Resources

Stars

Watchers

Forks

Releases

No releases published

Packages

No packages published

Languages