Add your description here
Project description
🌤️ Weather Dashboard CLI
A Python-based weather dashboard command-line application that displays current weather, forecasts, and alerts using a clean, modular architecture and Rich-based output.
✨ Features
- 🌍 Current weather for any city
- 🌧️ Forecast-based rain detection and weather alerts
- ⭐ Manage favorite cities (add, remove, list, clear)
- 🔁 Interactive menu mode and one-off CLI commands
- 🌡️ Celsius / Fahrenheit unit support
- 📊 Rich tables and formatted terminal output
🧠 Design Overview
The application is structured with a clear separation of responsibilities:
- Weather service — centralized API access and error handling
- View models — transform raw API data into display-ready objects
- UI helpers — render weather tables, alerts, and errors using Rich
- CLI layer — Typer-based commands and interactive workflows
This structure keeps the code easy to reason about, test, and extend.
🛠️ Installation
git clone https://github.com/<your-username>/weather-dashboard.git
cd weather-dashboard
uv sync
🚀 Usage
One-off commands
uv run python cli_weather.py current Singapore
python cli_weather.py current "New York" --units f
python cli_weather.py current Tokyo --json
Interactive mode
python cli_weather.py interactive
Favorites
python cli_weather.py fav add London
python cli_weather.py fav list
python cli_weather.py fav show
python cli_weather.py fav clear
🧪 Testing
Run all tests with:
uv run pytest
📁 Project Structure
weather_app/
├── client.py # HTTP + API error handling
├── weather_service.py # High-level weather fetch + orchestration
├── models.py # View models for presentation
├── ui.py # Rich-based rendering helpers
├── cli_weather.py # Typer CLI commands + interactive mode
├── favorites.py # Persistence helpers for favorites
├── alerts.py # Weather alert logic
├── units.py # Units and temperature conversion
├── conditions.py # Condition mappings and emojis
└── tests/
Project details
Release history Release notifications | RSS feed
Download files
Download the file for your platform. If you're not sure which to choose, learn more about installing packages.
Source Distribution
Built Distribution
Filter files by name, interpreter, ABI, and platform.
If you're not sure about the file name format, learn more about wheel file names.
Copy a direct link to the current filters
File details
Details for the file weather_dashboard_jl-0.1.1.tar.gz.
File metadata
- Download URL: weather_dashboard_jl-0.1.1.tar.gz
- Upload date:
- Size: 38.7 kB
- Tags: Source
- Uploaded using Trusted Publishing? No
- Uploaded via: uv/0.9.9 {"installer":{"name":"uv","version":"0.9.9"},"python":null,"implementation":{"name":null,"version":null},"distro":{"name":"macOS","version":null,"id":null,"libc":null},"system":{"name":null,"release":null},"cpu":null,"openssl_version":null,"setuptools_version":null,"rustc_version":null,"ci":null}
File hashes
| Algorithm | Hash digest | |
|---|---|---|
| SHA256 |
7b5b511e6b074d859307ef6f453ecd975f4c88379a0bb469b8978fbfda82cacb
|
|
| MD5 |
cacf87259dc78d89f11841bf63a1770a
|
|
| BLAKE2b-256 |
5edba674af88046118d1d217e9dece4cc921f926b4982414bb0236e6882ce4e6
|
File details
Details for the file weather_dashboard_jl-0.1.1-py3-none-any.whl.
File metadata
- Download URL: weather_dashboard_jl-0.1.1-py3-none-any.whl
- Upload date:
- Size: 16.4 kB
- Tags: Python 3
- Uploaded using Trusted Publishing? No
- Uploaded via: uv/0.9.9 {"installer":{"name":"uv","version":"0.9.9"},"python":null,"implementation":{"name":null,"version":null},"distro":{"name":"macOS","version":null,"id":null,"libc":null},"system":{"name":null,"release":null},"cpu":null,"openssl_version":null,"setuptools_version":null,"rustc_version":null,"ci":null}
File hashes
| Algorithm | Hash digest | |
|---|---|---|
| SHA256 |
d5878f48308717e09b9457ec445841e1deb74600574f5d3b4f8e249ed7d967ce
|
|
| MD5 |
0cfc6accce4993fd09a2448ae4389da5
|
|
| BLAKE2b-256 |
1a2ec60befe1c7daac7c31a777267bbbc39329428e8b2d291b3ba93cd52c25af
|