Aplicación de escritorio moderna para monitoreo climático. Refactorizada implementando Clean Architecture, gestión segura de secretos y diseño modular.
Este proyecto no es solo una calculadora de clima; es una demostración de ingeniería de software robusta:
- Arquitectura Modular: Separación estricta de responsabilidades en
src/ui(Vista),src/services(Lógica de Negocio) ysrc/config(Configuración). - Seguridad: Manejo de API Keys mediante variables de entorno (
.env), evitando credenciales hardcodeadas en el código fuente. - Testing: Suite de pruebas unitarias con
pytestimplementando mocking de servicios para aislar la lógica de red. - GUI Reactiva: Interfaz construida con PySide6 (Qt) y estilizada con QSS (Qt Style Sheets).
WeatherApp/
├── src/
│ ├── config.py # Gestión de variables de entorno
│ ├── services.py # Lógica de consumo de API (Requests)
│ └── ui.py # Interfaz Gráfica (PySide6)
├── tests/ # Tests unitarios mockeados
├── main.py # Punto de entrada (Entry Point)
├── .env # Archivo de secretos (No se sube al repo)
└── requirements.txt # Dependencias
- Python 3.8 o superior.
- Una API Key gratuita de OpenWeatherMap.
Sigue estos pasos para levantar el entorno de desarrollo:
git clone [https://github.com/ymvs84/WeatherApp.git](https://github.com/ymvs84/WeatherApp.git)
cd WeatherApppython -m venv venv
# En Windows:
.\venv\Scripts\activate
# En Mac/Linux:
source venv/bin/activatepip install -r requirements.txtEste proyecto usa python-dotenv. Crea un archivo llamado .env en la raíz del proyecto y añade tu clave:
WEATHER_API_KEY=tu_clave_de_openweathermap_aqui(Sin comillas y sin espacios)
Para iniciar la aplicación, ejecuta el punto de entrada principal:
python main.pyEl proyecto incluye tests que validan la lógica sin realizar llamadas reales a la API (Mocking).
pytest -vPara generar un archivo ejecutable portable para Windows:
pyinstaller --onefile --windowed --name="WeatherApp" main.pyEl archivo resultante estará en la carpeta dist/.
Autor: Yago Menéndez Senior Software Engineer & Computer Science Student LinkedIn | GitHub