
Real-time aviation analytics, solo-built end to end. A background worker polls OpenSky Network’s global ADS-B feed server-side every 120 seconds, staying within a fixed API credit budget, and pushes each snapshot to browsers over SignalR, where the client interpolates aircraft motion between updates (dead reckoning) so a low-frequency feed renders as continuous movement. Roughly 11,000 live aircraft are drawn on a WebGL/Mapbox GL JS map. An ASP.NET Core (.NET 8) backend segments the live stream into discrete Scandinavian flight tracks and flushes completed routes to PostGIS, where GiST spatial indexing backs historical playback. 82 xUnit and Vitest tests, validated by injecting defects to confirm each was caught. Dockerised backend on Fly.io with GitHub Actions CI/CD, frontend on Vercel.

