Skip to content

LeviLucena/weather_app

Folders and files

NameName
Last commit message
Last commit date

Latest commit

 

History

10 Commits
 
 
 
 

Repository files navigation

Python Badge Flask Badge PostgreSQL Badge SQLAlchemy Badge APScheduler Badge Matplotlib Badge Plotly Badge Meteoblue Badge Dotenv Badge Status Badge

Gemini_Generated_Image_voioiivoioiivoio

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.

🚀 Funcionalidades

  • 🔄 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.

🛠️ Stack Tecnológica

  • 🐍 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

🧪 Como executar localmente

1. Clone o repositório

git clone https://github.com/LeviLucena/weather_app.git
cd weather_app

2. Crie um ambiente virtual

python -m venv venv
source venv/bin/activate  # Linux/macOS
venv\Scripts\activate     # Windows

3. Instale as dependências

pip install -r requirements.txt

4. Configure as variáveis de ambiente

Crie um arquivo .env na raiz do projeto com o conteúdo:

METEOBLUE_API_KEY=sua_chave_api_aqui

Você pode obter uma chave da API no site da Meteoblue.

5. Execute a aplicação

python app.py

Acesse em http://localhost:5000.

🗃️ Banco de Dados

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.

🕒 Atualização Automática

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.

📁 Estrutura do Projeto

weather-app/
├── app.py
├── config.py
├── models.py
├── meteoblue_api.py
├── db.py
├── requirements.txt
├── .env
├── templates/
│   └── index.html
├── static/
├── last_update.txt

📸 Exemplo da Interface

🟦 Imagem 1 🟦 🟦 Imagem 2 🟦 🟦 Imagem 3 🟦 🟦 Imagem 4 🟦
Descrição1 Descrição2 Descrição3 Descrição4
Tela Inicial Gráfico Temperatura Gráfico Interativo Previsão nos Próximos Dias

📄 Licença

Este projeto está licenciado sob a MIT License - veja o arquivo para detalhes.

🙋‍♂️ Contribuição

Contribuições são bem-vindas! Sinta-se livre para abrir issues ou pull requests.

About

No description, website, or topics provided.

Resources

Stars

Watchers

Forks

Releases

No releases published

Packages

No packages published