How mitchross/radar-ng works
radar-ng is a self-hosted weather-radar and weather-data product: Temporal-driven workers ingest public radar, forecast, air-quality, lightning, and tropical data, render tiles, and serve them to an Expo app. Users select a location and inspect radar timelines, nowcasts, forecasts, alerts, and map overlays; the app also supports CarPlay, watch, and widget experiences. The graph preserves documented capabilities, but some subsystem links are intentionally broad because their implementation files were not sampled.
Main entry points: workflows Ingest workflows · index.tsx Expo app · tiler.py Tile rendering · (tabs) Weather screens
Components 30
Weather clients
- Expo app
frontend/src/app/(tabs)/index.tsx - Weather map
frontend/src/components/map/WeatherMap.tsx - Weather screens
frontend/src/app/(tabs) - Weather data hooks
frontend/src/hooks - CarPlay navigation
frontend/targets/carplay - Watch and widget
frontend/targets/watch
API and access
- FastAPI service
backend/api/api/server.py - Places and alerts API
backend/api/api/routes_places.py - Workflow API
backend/api/api/routes_workflows.py - Static tile serving
backend
Temporal orchestration
- Temporal schedules
temporal/schedules/seed.py - Temporal workers
temporal/worker.py - Ingest workflows
temporal/workflows - Storm watch workflow
temporal/workflows/watch_storm.py
Data ingestion
- MRMS radar ingest
backend/ingest_mrms/activities.py - HRRR forecast ingest
backend/ingest_hrrr/activities.py - Open-Meteo sync
backend/open_meteo_sync/activities.py - Air-quality ingest
backend/ingest_airquality/activities.py - Lightning ingest
backend/ingest_lightning/activities.py - Tropical ingest
backend/ingest_tropical/activities.py - Radar nowcast
backend/nowcast/activities.py
Tile and state storage
- Tile rendering
backend/shared/tiler.py - Tile manifest
backend/shared/manifest.py - Rendered tile files
backend
Other components
- Weather user
- NWS services
- Photon geocoder
- Temporal service
- Public data sources
- Push notification service
Connections 38
- Weather user → Expo app: uses
- Expo app → Weather screens: opens
- Weather screens → Weather map: displays
- Weather screens → Weather data hooks: requests data
- Weather data hooks → FastAPI service: calls
- FastAPI service → Places and alerts API: routes
- FastAPI service → Workflow API: routes
- Places and alerts API → NWS services: fetches alerts
- Places and alerts API → Photon geocoder: geocodes
- Workflow API → Temporal service: starts and queries
- Temporal schedules → Temporal service: creates schedules
- Temporal service → Temporal workers: dispatches tasks
- Temporal workers → Ingest workflows: registers workflows
- Ingest workflows → MRMS radar ingest: runs activities
- Ingest workflows → HRRR forecast ingest: runs activities
- Ingest workflows → Open-Meteo sync: runs activities
- Ingest workflows → Air-quality ingest: runs activities
- Ingest workflows → Lightning ingest: runs activities
- Ingest workflows → Tropical ingest: runs activities
- Ingest workflows → Radar nowcast: runs activities
- Temporal workers → Storm watch workflow: registers workflow
- MRMS radar ingest → Public data sources: fetches radar
- HRRR forecast ingest → Public data sources: fetches forecast
- Open-Meteo sync → Public data sources: syncs forecast
- Air-quality ingest → Public data sources: fetches air quality
- Lightning ingest → Public data sources: fetches lightning
- Tropical ingest → Public data sources: fetches tropical data
- MRMS radar ingest → Tile rendering: renders tiles
- HRRR forecast ingest → Tile rendering: renders tiles
- Air-quality ingest → Tile rendering: renders tiles
- Tile rendering → Rendered tile files: writes tiles
- Ingest workflows → Tile manifest: publishes layers
- Static tile serving → Rendered tile files: serves tiles
- Static tile serving → Tile manifest: serves manifest
- Weather data hooks → Static tile serving: fetches map data
- Expo app → CarPlay navigation: supports navigation
- Expo app → Watch and widget: shares radar data
- Storm watch workflow → Push notification service: sends notifications