Zero backend. Zero servers. Zero cost.
As climate extremes become more frequent, understanding forecast hazards becomes survival literacy. Zero makes professional ECMWF IFS data accessible without commercial infrastructure — forkable, self-hostable, resilient. Inspired by Cameron Beccario's earth.nullschool.net, which pioneered browser atmospheric visualization.
Happy to discuss implementation details.
Technical highlights:
- No backend - runs entirely client-side - Native O1280 grid (6.6M points) sampled directly in fragment shaders - no regridding to textures - HTTP Range requests fetch ~500KB slices from 4-8MB forecast files on S3 - Works offline after first load (Service Worker caching) - Animated LOD transitions for graticule grid - line density adapts to zoom level
GPU pipeline:
- Binary search in WGSL for irregular Gaussian grid lookup (precomputed LUTs for latitude positions and ring offsets) - Marching squares compute shader for isobar contours - Streamline tracing with Rodrigues rotation for wind flow animation - Fibonacci sphere for uniform seed point distribution (8K-32K wind lines) - Globe rendered via fullscreen triangle (ray-sphere intersection in fragment shader) - Sub-3ms frame times on M1
What didn't work:
- Regridding to textures first - too slow for 6.6M points, quality loss from interpolation - Geometry-based globe mesh - vertex count explosion at high detail - CPU-side contour generation - latency killed interactivity
Storage: Caches weather data locally for offline use. Can grow to several GB with extended exploration. Use the "nuke" option in settings to clear everything.
Data hosted by Open-Meteo via the AWS Open Data Sponsorship Program — bandwidth is free for everyone.
Stack: TypeScript, WebGPU, Mithril, Zod, Immer