● internal

Weather Radar

NEXRAD radar ingest and tiling pipeline with live loops

pythonnexraddocker

repository

python 79.3%javascript 16.7%css 2.7%html 1.0%dockerfile 0.3%

last commit 5h ago 80 commits 7d 106 30d 334 ytd

NEXRAD Level-II data is published in near-real time by NOAA on rotating S3 buckets. The ingest worker polls the bucket for the local radar site, retrieves new volume scans as they appear, and renders them into georeferenced tile layers using Py-ART. Tiles are stored locally and served over a lightweight tile server that the frontend fetches to assemble animated radar loops.

A retention manager runs alongside the ingest worker and prunes tiles older than a configurable window, keeping disk usage bounded without manual intervention. A Playwright-driven UAT suite runs against the live stack on the homelab LAN: it loads the radar page, waits for the animation loop to start, and asserts that the most recent frame falls within the expected age window. The suite runs on a schedule so regressions surface automatically rather than on the next manual check.

The service runs privately on the homelab edge behind Authentik single sign-on - there is no public demo URL, but the pipeline runs continuously and the architecture is representative of any NEXRAD ingest workflow.

Architecture

The ingest pipeline is a Python service running under Docker with volume mounts for tile storage. Py-ART handles the Level-II decode and rendering. A second Python process manages retention. The tile server is a minimal FastAPI app that streams tiles from the local mount. Playwright UAT runs in a separate container on the same Docker network and posts results to a Mattermost channel on failure.