Desafio Ideal

Esse repositório foi criado para a reprodução do desafio descrito nesse repositório

Optou-se por desenvolver a solução utilizando a linguagem Python, junto com a biblioteca flask-restful

Instruções de execução

A aplicação está estruturada em dois containers Docker:

  • Banco de dados PostgreSQL 14
  • Aplicação Python/Flask

Essa decisão foi tomada considerando que em um ambiente de produção as duas aplicações costumam serem executadas em locais diferentes.

Para executar os containers basta executar o comando

docker-compose up -d

O banco de dados estará disponivel na porta 5432 e o a API na porta 5050.

Durante o processo de build do container todas as tabelas do banco de dados serão criadas através do uso do ORM SqlAlchemy e sua integração com o Flask.

Dado a baixa complexidade das tabelas e das relações entre elas não foram desenvolvidos scripts SQL para a criação manual das tabelas.

Documentação

Para a documentação das rotas, optou-se por utilizar o padrão swagger. Para consultar a documentação basta acessar o endereço http://localhost:5050/apidocs com os containers ativos

Pontos de melhoria

  • Inclusão de testes: devido ao tempo de desenvolvimento do desafio, os testes não foram desenvolvidos.
  • Criação de rotas para alteração nos produtos cadastrados, diversos verbos disponiveis no protocolo http podem ser utilizados para a implementação dessas funcionalides.
  • Criar rotas com views para consultar dados de ordens feitas por um usuário, ordens feitas por produto e etc.
  • Utilizar mais um container com apache or nginx para hospedar a aplicação rest