All Things Spatial
ATS Labs · Esri SDK Showcase · Calcite · experimental

ATS Sea State

870 NOAA buoys — and a live five-day wave forecast for any patch of ocean on Earth.

What it is

ATS Sea State puts the state of the world ocean on one map. A bundled snapshot of 870 NOAA National Data Buoy Center stations (latest observations, 2026-07-12 02:30Z) colors every wave-reporting buoy from calm deep teal through cyan and amber to severe red; stations without wave sensors render as small gray dots. Click any buoy — or any patch of open water anywhere on Earth, in drop-a-probe mode — and the app fetches a live five-day wave forecast on the spot from the Open-Meteo Marine API, drawn on a hand-rolled canvas chart: hourly wave height in cyan, swell as a dashed white line, day gridlines, and dual meter/foot axes with the maximum labeled.

The architecture is a deliberate hybrid. NDBC serves no CORS headers, so live browser polling of the buoy network is impossible — the snapshot keeps 870 real stations on the map with zero infrastructure. Open-Meteo Marine is keyless and CORS-enabled, so the forecast layer is genuinely live, cached for fifteen minutes per point. The combination delivers a live-feeling global ocean product that still runs from static files with an empty .env.

A glass detail card presents snapshot readings in dual units — meters and feet, knots, °C and °F, hPa — and the panel offers buoy-ID search, region quick-links (North Atlantic, Pacific Northwest, Gulf, Hawaii, Great Lakes), a wave-height legend, a top-10 roughest-seas list and stats chips.

The experience

The oceans basemap sets the mood, and the buoys tell the story — colored clusters off both US coasts, the Great Lakes speckled, severe seas standing out in red. Two clicks cover the whole product:

The data — where it comes from

A bundled NOAA snapshot, one live keyless forecast API, and an anonymous basemap.

SourceWhat it providesRefreshCostAttribution
NOAA NDBC latest station observations (bundled ndbc-snapshot.json)870 buoys: position, significant wave height, dominant period, wind, air/sea temperature, pressureStatic snapshot, 2026-07-12 02:30Z — NDBC serves no CORS headers, so live browser polling is not possibleFreeNOAA National Data Buoy Center
Open-Meteo Marine API (live, keyless, CORS-enabled)5-day hourly forecast per point: wave height, period and direction, swell and wind-wave heightsLive on demand, cached 15 minutes per pointFree (CC BY 4.0)Open-Meteo (open-meteo.com), CC BY 4.0
Esri Oceans basemap (anonymous)Bathymetric ocean basemap under the buoy layerVendor-managedFree (no API key)Esri attribution renders in-map automatically

How it was assembled

The application is a fully static single-page app — no backend, no database, no server-side rendering. The stack: TypeScript, ArcGIS Maps SDK for JavaScript 5.0.x, Calcite Design System 5.0.x, and Vite 8.

Module map — the codebase is small and deliberate; each file owns one concern:

Key engineering decisions