Projeto com o propósito de aprendizado na linguagem Python, o microframework Flask e a lib ORM SQLAlchemy.
- Python, versão 3.9.2
- Docker
- PostgreSQL
- Flask
- SQLAlchemy
- Git
- Visual Studio Code
- Postman
- DBeaver
- PIP
Todas as dependências estão listadas no requirements.txt, porém há o destaque na lib PyOWM, utilizada no projeto. Ela funciona como um wrapper das API's da plataforma OpenWeatherMap. A sua documentação pode ser consultada aqui.
A collection do Postman pode ser baixada por aqui.
O arquivo config.py é responsável pela importação e configuração da conexão com o banco de dados. O client.py, possui o propósito também de configuração, porém do objeto da lib PyOWM, a qual será utilizado no restante do projeto. No arquivo models.py, possui o mapeamento da tabela Histórico, cujo servirá para visualizar as consultas realizadas anteriormente na API. O arquivo app.py é o arquivo principal, onde fica mapeado os endpoint's e alguns métodos auxiliares para realizar de/para de objeto para dicionário, por exemplo.
Necessário possuir instalado:
- Python versão 3.x.x
- Docker
Na raiz do projeto, utilizar o seguinte comando para criar um ambiente virtual no Python:
python -m venv [path/to/myenv]
A seguir, ative-o:
./path/to/myenv/Scripts/activate
Ainda na raiz do projeto e com o ambiente virtual ativado, utilize o comando a seguir para instalar as dependências:
pip install -r requirements.txt
Criar um arquivo .env dentro da raíz do projeto, informando a key da API do OpenWeatherMap, no formato a seguir:
API_KEY = "XXXXXXXXXXXXXXXXXXXXXXXXX"
Agora, suba o PostgreSQL:
docker-compose up database
E então, execute a aplicação:
cd flaskr
python -m flask run
- Testes automatizados.
- Containerizar a própria API. Atualmente, só o banco de dados está containerizado.
- Implementar opções de filtro para a consulta de histórico.
- Implementar mais tratamentos e validações em casos de erros.
- Implementar outros endpoints de consulta, adicionando parâmetros para uma consulta mais precisa; atualmente é utilizado apenas o nome da cidade.
- Documentação da API, descrição aprofundada do que cada endpoint retorna e seus parâmetros.
- Tratamento de TimeZone e formatação de pontos flutuantes em alguns campos.
- Implementar a consulta de previsão dos próximos cinco dias.