Esta é uma aplicação web feita com Flask que consome dados da API de clima da Meteoblue, armazena em um banco de dados relacional e exibe relatórios interativos com gráficos de temperatura, vento e precipitação.
- 🔄 Atualização automática dos dados meteorológicos a cada 6 horas.
- 📅 Filtro por intervalo de datas.
- 📊 Visualização dos dados em gráficos (Matplotlib e Plotly).
- 🗃️ Armazenamento persistente dos dados no banco de dados (PostgreSQL ou SQLite).
- 🌎 Consulta por latitude e longitude.
- ✅ Indicação da última atualização bem-sucedida dos dados.
- 🐍 Flask - Microframework web Python
- 💾 SQLite - Banco de dados leve e embutido
- ⛅ Meteoblue API - API de previsão do tempo
- ⏱️ APScheduler - Agendador de tarefas
- 📊 Matplotlib - Biblioteca para visualização de dados
- 📈 Plotly - Criação de gráficos interativos
- 🔑 Python Dotenv - Gerenciamento de variáveis de ambiente
git clone https://github.com/LeviLucena/weather_app.git
cd weather_apppython -m venv venv
source venv/bin/activate # Linux/macOS
venv\Scripts\activate # Windowspip install -r requirements.txtCrie um arquivo .env na raiz do projeto com o conteúdo:
METEOBLUE_API_KEY=sua_chave_api_aquiVocê pode obter uma chave da API no site da Meteoblue.
python app.pyAcesse em http://localhost:5000.
Por padrão, a aplicação usa o banco definido em config.py. Pode ser facilmente configurada para usar PostgreSQL, SQLite ou outro banco relacional.
As tabelas são criadas automaticamente na primeira execução.
Os dados são atualizados automaticamente a cada 6 horas com o uso do APScheduler.
A data/hora da última atualização bem-sucedida é salva em last_update.txt e exibida na interface do usuário.
weather-app/
├── app.py
├── config.py
├── models.py
├── meteoblue_api.py
├── db.py
├── requirements.txt
├── .env
├── templates/
│ └── index.html
├── static/
├── last_update.txt| 🟦 Imagem 1 🟦 | 🟦 Imagem 2 🟦 | 🟦 Imagem 3 🟦 | 🟦 Imagem 4 🟦 |
|---|---|---|---|
![]() |
![]() |
![]() |
![]() |
| Tela Inicial | Gráfico Temperatura | Gráfico Interativo | Previsão nos Próximos Dias |
Este projeto está licenciado sob a MIT License - veja o arquivo para detalhes.
Contribuições são bem-vindas! Sinta-se livre para abrir issues ou pull requests.




