Skip to main content

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


Download files

Download the file for your platform. If you're not sure which to choose, learn more about installing packages.

Source Distribution

weather_dashboard_jl-0.1.1.tar.gz (38.7 kB view details)

Uploaded Source

Built Distribution

If you're not sure about the file name format, learn more about wheel file names.

weather_dashboard_jl-0.1.1-py3-none-any.whl (16.4 kB view details)

Uploaded Python 3

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

Hashes for weather_dashboard_jl-0.1.1.tar.gz
Algorithm Hash digest
SHA256 7b5b511e6b074d859307ef6f453ecd975f4c88379a0bb469b8978fbfda82cacb
MD5 cacf87259dc78d89f11841bf63a1770a
BLAKE2b-256 5edba674af88046118d1d217e9dece4cc921f926b4982414bb0236e6882ce4e6

See more details on using hashes here.

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

Hashes for weather_dashboard_jl-0.1.1-py3-none-any.whl
Algorithm Hash digest
SHA256 d5878f48308717e09b9457ec445841e1deb74600574f5d3b4f8e249ed7d967ce
MD5 0cfc6accce4993fd09a2448ae4389da5
BLAKE2b-256 1a2ec60befe1c7daac7c31a777267bbbc39329428e8b2d291b3ba93cd52c25af

See more details on using hashes here.

Supported by

AWS Cloud computing and Security Sponsor Datadog Monitoring Depot Continuous Integration Fastly CDN Google Download Analytics Pingdom Monitoring Sentry Error logging StatusPage Status page