A firmware port, done properly.
The Planetaria desk globe renders the Earth per-pixel on an ESP32. On a watch, that instrument becomes a native Kotlin Wear OS app whose render cores are line-for-line ports of the firmware — the same spherical projection, the same subsolar lighting, the same framing defaults — wrapped in a platform-correct watch experience: a swipe carousel, ambient mode, a Watch Face Format face, two tiles, and nine complications. It runs standalone on the watch, with an optional phone companion alongside it.
Eleven worlds, one swipe.
Swipe sideways through eleven worlds, with Tonight, Settings and About above them and the tide dial below. Every view is computed for this minute and the watch's real location.
The parts that took the longest.
The hard engineering is keeping an always-correct instrument accurate on a battery.
- Golden-tested cores · pure Kotlin, no AndroidThe astronomy and both software renderers live in pure-JVM modules with zero Android dependencies, pinned by golden tests against the firmware's output and reference ephemerides, so the watch's Earth matches the desk globe's Earth frame for frame. The same modules would carry an Apple Watch port if I build one.
- Offline-first · two clocks, one cacheAstronomy computes on-device forever, with no network required. Live layers read one disk-cached bundle refreshed on a gentle schedule; every feed keeps showing its last good value when a fetch fails. Time-lapse runs on an accelerated scene clock while data freshness stays on the real one.
- Edge backend · a server that costs nothingA Cloudflare Worker on the free tier aggregates and edge-caches the feeds, so one fetch is shared across the fleet instead of every watch calling NASA, NOAA and USGS itself. If the Worker is down a watch falls back to the sources directly, so the app keeps working rather than depending on it, and it runs unattended at $0.
- Battery discipline · built for all-day wearFrames tick slowly in real-time mode, ambient dims instantly and renders once per system tick, the time-lapse spin only runs while charging, and I smoke-test the R8-minified release on hardware — which is how I caught two silent minifier bugs before the build went out.
Where it stands. Watch 1.6.0 and a phone companion 1.0.0 are with closed testers on Google Play as com.jdcap.planetaria, running on hardware (Galaxy Watch 7). A fourteen-day test runs before the production release. Privacy policy. There is more on the CosNFX store page.