Space Tech · Orbital Mechanics · Satellite Tracker · 2026 · Solo build
Overpass
Live satellite pass scheduler: real Celestrak TLE data, SGP4 orbital mechanics, topocentric AltAz conversion, and ICS calendar export — all computed client-side.
The problem
Amateur astronomers, ham radio operators, and satellite photographers need to know exactly when a satellite (ISS, Tiangong, weather sats) will pass overhead and at what elevation — but existing tools are slow web apps that require server round-trips. Overpass delivers real-time pass predictions computed entirely in the browser using live TLE ephemeris data from Celestrak and an SGP4 orbital propagation engine. Users share their location (GPS or manual entry), select a prediction window (24–168 hours) and minimum elevation threshold, and receive a sorted list of upcoming passes with rise time, peak time, set time, azimuth bearings, peak elevation arcs, and pass duration — plus an ICS calendar file for import into any calendar app.
Architecture
Key decisions
SGP4 via satellite.js — JS propagation, no server
satellite.js provides a production-grade TypeScript SGP4 implementation matching standard orbital mechanics libraries. Importing it in the browser (with webpack aliasing to stub the unused pthreads/WASM runtime) avoids server infrastructure while delivering accurate pass predictions within seconds of the user sharing their location.
10-second propagation interval for pass detection
A 10-second step over the prediction window gives sub-minute precision on rise/peak/set times with acceptable CPU cost. The algorithm scans for elevation sign changes and refines the transition by binary search within adjacent 10-second windows.
Celestrak as live TLE authority with a static ISS/Tiangong fallback
The SOCRATES endpoint provides current TLEs for highly visible objects. If Celestrak is unreachable (CORS, network), a hardcoded recent ISS and Tiangong TLE ensures the demo always produces at least two meaningful pass predictions rather than an empty state.
ICS export with RFC 5545 VEVENT blocks
Each satellite pass becomes a calendar event with DTSTART, DTEND, SUMMARY (satellite name + peak elevation), DESCRIPTION (azimuth bearings, duration), and a unique UID. The Blob URL is revoked 1 second after the click to prevent memory leaks.
TDD: 20 orbital mechanics tests before any UI
All core algorithms — parseTle, propagateSatellite, topocentricAltAz, findNextPasses, formatICS — were written test-first with vitest. Tests verify real SGP4 propagation output (position non-zero, altitude in LEO range), topocentric conversion geometry, pass detection (rise < peak < set), elevation thresholding, ICS format compliance, and edge cases (no passes, error propagation).