Skip to content

mitchross/radar-ng

Repository files navigation

radar-ng

Hyper-local weather radar you host yourself — a CARROT-Weather-style Expo app on a Python + Temporal tile pipeline. Pure NOAA data, sub-2-minute refresh, no aggregators, no API keys.

expo python temporal k8s

Home Nowcast Radar Alerts Settings

radar-ng pulls radar (NOAA MRMS), forecast (HRRR + Open-Meteo), alerts (NWS), lightning (Blitzortung), and tropical (NHC) straight from the public sources, renders map tiles on hardware you own, and serves them to a universal Expo app. The phone is the windshield; a Kubernetes + Temporal pipeline is the engine.

Quick start (Docker Compose)

cd deploy
cp .env.example .env
# set two values in .env:
#   NWS_USER_AGENT=(radar-ng, you@example.com)
#   BASEMAP_PMTILES_URL=   # newest date from https://build.protomaps.com/
docker compose run --rm basemap-bootstrap   # one-time basemap fetch
docker compose up -d

First radar frame lands ~2 min later. Point the app at http://<host>:8080 (or set it in Settings). Deploying to your own Kubernetes cluster and running the app are covered in GETTING_STARTED.md.

Prebuilt images: ghcr.io/mitchross/radar-ng-{tile-server,temporal-worker,open-meteo-worker}.

How it works

Every ingest step is a Temporal activity, scheduled by Temporal Schedules (no cron). The tile-server is Caddy — static tile serving off disk + immutable cache headers + one-port routing — in front of FastAPI/uvicorn. The component-by- component breakdown, the per-frame pipeline, and the caching story are in ARCHITECTURE.md.

Docs

Doc For
GETTING_STARTED.md Run the stack (Compose or k8s) + the app
docs/configuration.md Every env var + the basemap-date gotcha
docs/self-hosting.md Docker Compose golden path
docs/kubernetes.md Bring-your-own-cluster (Temporal, storage, probes)
docs/tuning.md Faster / cheaper / fresher, knob by knob
docs/debug-harness.md Inspect a live stack: freshness, latency, Temporal, disk
ARCHITECTURE.md How it all fits together
CONTRIBUTING.md Dev setup, verification, conventions

Data sources

All free, public, no keys: NOAA MRMS (radar) · NOAA HRRR + Open-Meteo (forecast) · NWS (alerts) · NHC (tropical) · Blitzortung (lightning) · Protomaps (basemap).

Stack

Expo SDK 56 / TypeScript · MapLibre · Skia · Python 3.12 (pygrib · numpy · Pillow · FastAPI) · Caddy 2 · Temporal · Open-Meteo · Protomaps · Kubernetes (Talos + ArgoCD) · OpenTelemetry.

License

See LICENSE.

About

Hyper-local weather radar with a self-hosted NOAA tile pipeline — CARROT-Weather-style Expo app + Kubernetes/Temporal backend. Pure NOAA data, sub-2-min refresh, runs on hardware you own.

Topics

Resources

License

Contributing

Stars

0 stars

Watchers

0 watching

Forks

Releases

No releases published

Packages

 
 
 

Contributors