Aplicação web que permite aos usuários se cadastrarem com suas cidades e receberem notificações personalizadas por e-mail sobre a previsão do tempo diariamente.
O Umbrella Remember é uma aplicação Flask que oferece:
- Sistema de cadastro e autenticação de usuários com criptografia segura de senhas
- Banco de dados completo com todas as cidades brasileiras (integração com API do IBGE)
- Verificação automática do clima via API OpenWeatherMap
- Envio personalizado de e-mails com previsão do tempo baseada na localização do usuário
- Sistema de sessões para controle de acesso às páginas
- Cadastro: Registre-se com nome, e-mail, senha e cidade
- Login/Logout: Sistema de autenticação seguro
- Perfil: Visualize e edite seus dados pessoais
- Exclusão de conta: Remova sua conta quando desejar
- Seleção de cidades: Escolha entre todas as cidades brasileiras
- Interface intuitiva: Digite ou selecione sua cidade em um dropdown sincronizado
- Dados atualizados: Base de dados com informações do IBGE
- Python 3.13+
- MySQL ou outro banco de dados compatível com SQLAlchemy
- Conta no OpenWeatherMap (gratuita)
pip install flask flask-session sqlalchemy pymysql python-dotenv argon2-cffi requestsCrie um arquivo .env na raiz do projeto:
# Configurações do Banco de Dados
DB_USER=seu_usuario_db
DB_PASSWORD=sua_senha_db
DB_HOST=localhost
DB_NAME=umbrella_remember
# Chave secreta da aplicação Flask
SECRET_KEY=sua_chave_secreta_super_segura
# API do OpenWeatherMap
OPENWEATHER_API_KEY=sua_chave_api_aqui
# Configurações de E-mail
SMTP_SERVER=smtp.gmail.com
SMTP_PORT=587
SMTP_USER=seu_email@gmail.com
SMTP_PASSWORD=sua_senha_de_appExecute o script para criar as tabelas e popular com dados das cidades brasileiras:
python models/model.pypython app.pyA aplicação estará disponível em http://localhost:5000
Para enviar notificações de clima para todos os usuários:
python utils/checkRain.py- Formulário de cadastro com seleção de cidade
- Interface responsiva e amigável
- Autenticação segura de usuários
- Redirecionamento automático após login
- Visualização dos dados do usuário
- Botões para editar ou excluir conta
- Atualização de dados pessoais
- Mudança de cidade
🌧️ Quando há previsão de chuva:
- Assunto: "Dia de chuva!"
- Conteúdo: E-mail personalizado com o nome do usuário e cidade
- Visual: Imagem de guarda-chuva e design responsivo
☀️ Quando não há previsão de chuva:
- Assunto: "Dia de sol!"
- Conteúdo: E-mail motivacional sobre o dia ensolarado
- Visual: Imagem de dia ensolarado e cores vibrantes
- E-mails são enviados individualmente para cada usuário
- Conteúdo personalizado com nome e cidade do usuário
- Design HTML responsivo com imagens do Unsplash
UmbrellaRemember/
├── app.py # Aplicação Flask principal
├── generate_app_key.py # Gerador de chave secreta
├── .env # Variáveis de ambiente
├── .gitignore # Arquivos ignorados pelo Git
├── LICENSE # Licença do projeto
├── README.md # Documentação
├── models/ # Modelos do banco de dados
│ ├── model.py # Classes SQLAlchemy e configuração DB
│ ├── get_user_by_id.py # Função para buscar usuário por ID
│ └── update_user.py # Função para atualizar dados do usuário
├── utils/ # Utilitários
│ ├── checkRain.py # Script de verificação do clima
│ ├── email_exists.py # Verificação de e-mail existente
│ ├── login_verify.py # Verificação de login
│ └── send_email.py # Envio de e-mails
├── templates/ # Templates HTML
│ ├── layout.html # Layout base
│ ├── index.html # Página inicial
│ ├── login.html # Página de login
│ ├── profile.html # Página de perfil
│ └── editUserPage.html # Página de edição
├── static/ # Arquivos estáticos
│ ├── syncCityInput.js # JavaScript para seleção de cidades
│ └── css/
│ ├── layout.css # Estilos gerais
│ ├── index.css # Estilos da página inicial
│ └── profile.css # Estilos do perfil
├── flask_session/ # Sessões do Flask- Registro: Usuário acessa
/e se cadastra escolhendo sua cidade - Autenticação: Sistema criptografa senha com Argon2 e armazena no banco
- Login: Usuário faz login em
/logincom e-mail e senha - Perfil: Acesso à página de perfil com dados pessoais
- Edição: Possibilidade de atualizar dados ou excluir conta
- Execução diária: Script
checkRain.pyverifica clima para todos os usuários - Geolocalização: Converte cidade do usuário em coordenadas (lat/lon)
- Consulta API: Obtém previsão do tempo via OpenWeatherMap
- Análise: Verifica se há chuva prevista para o dia atual
- E-mail personalizado: Envia notificação específica para cada usuário
- Países, Estados e Cidades: Base completa com dados do IBGE
- Usuários: Informações pessoais e referência à cidade
- Relacionamentos: Estrutura normalizada com chaves estrangeiras
- Segurança: Senhas criptografadas com Argon2
- Flask: Framework web Python
- SQLAlchemy: ORM para banco de dados
- MySQL: Sistema de gerenciamento de banco de dados
- Argon2: Criptografia de senhas
- Flask-Session: Gerenciamento de sessões
- OpenWeatherMap API: Dados meteorológicos
- IBGE API: Dados geográficos do Brasil
- HTML/CSS/JavaScript: Interface do usuário
- SMTP: Envio de e-mails
- python-dotenv: Gerenciamento de variáveis de ambiente
- Senhas criptografadas com Argon2
- Verificação segura de credenciais
- Sistema de sessões para controle de acesso
- Validação de entrada de dados
- Sanitização de e-mails
- Tratamento de exceções para evitar vazamentos de informações
- Credenciais sensíveis armazenadas em arquivo
.env - Separação entre configuração e código
- ✅ Sistema web funcionando completamente
- ✅ Banco de dados com todas as cidades brasileiras
- ✅ Autenticação segura de usuários
- ✅ Notificações personalizadas por e-mail
- ✅ Interface responsiva e amigável
- ✅ Sistema de gerenciamento de perfil
- Fork o projeto
- Crie uma branch para sua feature (
git checkout -b feature/NovaFeature) - Commit suas mudanças (
git commit -m 'Adiciona nova feature') - Push para a branch (
git push origin feature/NovaFeature) - Abra um Pull Request
Este projeto está sob a licença MIT. Veja o arquivo LICENSE para mais detalhes.
🌦️ Nunca mais esqueça o guarda-chuva!