Skip to content

Folders and files

NameName
Last commit message
Last commit date

Latest commit

 

History

3 Commits
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 

Repository files navigation

Nimbus — Weather Dashboard

A modern, dark-themed Windows weather dashboard that auto-detects your location and shows current conditions, hourly & 7-day forecasts, severe-weather alerts, an interactive radar map, and astronomy data — all from free, key-less APIs. Compiles to a single self-contained Nimbus.exe.

Nimbus dashboard


Download

Grab the latest self-contained Nimbus.exe from the Releases page — no install, no Python, no dependencies. Just download and run.


Features

Area Details
Current weather Temperature, feels like, condition, rain & snow status
Stats Humidity, wind (speed + direction + gusts), pressure, visibility, UV index, dew point
Forecasts 24/48-hour hourly strip + detailed page, 7-day forecast with hi/lo range bars
Alerts US National Weather Service active alerts; severe/extreme highlighted in red
Radar Interactive Leaflet map — OpenStreetMap base + live RainViewer precipitation overlay (zoom / pan / location marker)
Europe storm tracker Continent-wide rain & thunderstorm map (CARTO basemap + live RainViewer radar) on the dashboard
Sun & Moon Sunrise, sunset, and a custom-painted realistic moon — shaded sphere with maria/craters and the true phase terminator (computed locally), shown in the hero card
Live clock Header time ticks every second in the location's local timezone
Offline mode Last good data is cached; if the network drops the app shows it with an "Offline" badge and never crashes
Settings 12h/24h clock, auto-detect vs. manual city, refresh interval — persisted to settings/settings.json (temperature shown in °C)

APIs used (all free, no API key)

  • Open-Meteoforecast & air quality (current/hourly/daily, UV index)
  • Open-Meteo Geocoding — manual city lookup
  • ipapi.co / ip-api.com — IP geolocation (with automatic fallback)
  • api.weather.gov (NWS) — severe-weather alerts (US)
  • RainViewer — radar tiles · OpenStreetMap / CARTO — base map tiles

Project layout

Nimbus/
├── main.py                 # entry point: logging + Qt + qasync loop + DI wiring
├── core/                   # domain layer (no Qt/network deps where avoidable)
│   ├── models.py           #   dataclasses crossing the service<->UI boundary
│   ├── weather_codes.py    #   WMO code -> description / icon / scene
│   ├── astronomy.py        #   moon phase & illumination
│   ├── format.py           #   unit / time / compass formatting
│   ├── paths.py            #   source-vs-frozen path resolution
│   └── logging_config.py   #   centralized rotating-file logging
├── services/               # async API layer + DI container
│   ├── http.py             #   shared aiohttp client (retries, timeouts)
│   ├── geolocation.py      #   IP detect + manual geocode
│   ├── weather_api.py      #   Open-Meteo forecast + air quality -> WeatherBundle
│   ├── alerts_service.py   #   NWS alerts
│   ├── cache.py            #   TTL JSON + blob cache (offline fallback)
│   ├── settings_service.py #   settings.json + change signal
│   ├── icon_service.py     #   vector (QPainter) icon renderer
│   ├── image_service.py    #   procedural hero backgrounds
│   ├── container.py        #   ServiceContainer (dependency injection)
│   └── controller.py       #   orchestrates fetch / cache / refresh timer
├── widgets/                # reusable presentational widgets
├── ui/                     # MainWindow, Sidebar, and stacked pages/
├── themes/dark.qss         # the dark theme stylesheet
├── assets/                 # bundled resources (icons are drawn, so optional)
├── cache/  settings/  logs/  (created at runtime)
├── requirements.txt
├── Nimbus.spec             # PyInstaller spec (onefile, windowed)
├── build.py                # convenience build wrapper
└── README.md

Architecture: MVC-ish — core models, services (controller) logic, ui/ widgets views. All network I/O is async (aiohttp on the qasync loop) and funnelled through services obtained from a single ServiceContainer (dependency injection). Logging is centralized to a rotating file.


Run from source

Requires Python 3.13 on Windows.

# from the Nimbus/ folder
py -3.13 -m venv .venv
.\.venv\Scripts\Activate.ps1
pip install -r requirements.txt
python main.py

If py isn't available, use the full interpreter path, e.g. & "C:\Program Files\Python313\python.exe" -m venv .venv.


Build Nimbus.exe

pip install -r requirements.txt
pyinstaller --noconfirm Nimbus.spec
# -> dist\Nimbus.exe

or simply:

python build.py --clean

The spec already encodes --onefile --windowed. The equivalent one-liner (without the spec) would be:

pyinstaller --onefile --windowed --name Nimbus ^
  --add-data "themes/dark.qss;themes" --add-data "assets;assets" ^
  --hidden-import PySide6.QtWebEngineWidgets main.py

The result is a single dist\Nimbus.exe with no external runtime dependencies — copy it anywhere and run.

Notes

  • First launch does a live fetch; subsequent launches render cached data instantly, then refresh in the background (default every 10 min).
  • Writable data (cache / settings / logs) lives under %LOCALAPPDATA%\Nimbus for the frozen exe, or inside the project folder when run from source.
  • The radar map needs QtWebEngine, which the spec bundles automatically. If a stripped environment can't load it, the radar page shows a friendly message and the rest of the app keeps working.
  • Icons and hero backgrounds are drawn at runtime (vector / cinematic procedural scenes), so the build stays fully self-contained and crisp at any DPI.
  • Want photographic hero backgrounds? Drop images into assets/backgrounds/ named <scene>_<day|night>.jpg (or .png) — scenes are clear, cloudy, fog, rain, snow, storm (e.g. rain_night.jpg). If a matching file is present it's used automatically (cover-cropped); otherwise the procedural scene is drawn. Rebuild to bundle them into the exe.

License

Released under the MIT License.

Data attribution

Weather data © Open-Meteo (CC-BY 4.0) · Radar © RainViewer · Alerts © NOAA/NWS · Map data © OpenStreetMap contributors, tiles © CARTO.

About

Modern dark-themed Windows weather dashboard (PySide6): live conditions, hourly & 7-day forecasts, radar, a Europe storm tracker, and a realistic painted moon. Single-file Nimbus.exe, all key-less APIs.

Topics

Resources

Stars

Watchers

Forks

Releases

Packages

Contributors

Languages