A multi-domain operations console — 12,408 satellites, aircraft and ships, propagated live in the browser.
Space and defense teams run their operational picture in the browser now — but propagating tens of thousands of orbital objects at 60fps, live, without a paid tile/token service, is where most demos fall over.
Began from the SGP4 propagation math and one question: how many objects can a browser hold at 60fps? Evaluated CesiumJS vs deck.gl vs raw WebGL, studied TLE sources and ADS-B (OpenSky) for aircraft and AIS for ships — and decided the propagation had to leave the main thread.
SGP4 runs in a Web Worker feeding GPU point primitives, so the globe never stutters. A tiny caching TLE API (Hono + node:sqlite) keeps it tokenless; a committed TLE seed makes it run fully offline. CesiumJS chosen over deck.gl for a true WGS84 globe.
React 19 + TypeScript 5.9 strict + Vite 7 + Zustand 5. Sim-time warp/scrub, pass prediction, a polar sky plot. 117 tests. Dockerized and deployed via GitHub Actions to a Hetzner box.