← awmium/portfolio
portfolio/flight-tracker.mdread-only
---
tags: [fabric, react, maplibre]
stack: [rayfin, react, maplibre, opensky]
read: 1 min
---

Live Flight Tracker

I built a live flight tracker that runs as a Fabric Data App, after Injae Park’s video on his Transit Control app got me hooked. It plots real aircraft from OpenSky’s open ADS-B feed, each tagged with callsign, speed, altitude, heading and origin country, and lets you replay where any plane has just been.

How it works

  • The frontend is React and Vite on Rayfin, Microsoft’s Fabric apps SDK, hosted in a Fabric workspace behind Fabric sign-in.
  • Hundreds of aircraft refresh every few seconds on a MapLibre map. Each icon points along its true heading, and planes glide between updates instead of snapping.
  • Selecting a plane fetches its track and replays the last five minutes of the route it actually flew.
  • The browser can’t call OpenSky directly (CORS) and must never hold the client secret, so a small proxy on Deno Deploy does the OAuth2 client-credentials exchange, caches the token and forwards requests. It only answers the app’s own origins and only the two read-only endpoints the app uses.

Why it matters

Data Apps take Fabric past semantic models and reports. This was my proof that a live, custom application can ship right where the data and the users already are, whether the source is a streaming API like this one or a model you already own.

read# Live Flight Tracker[ ] sections226 words · 1 min · utf-8 · LFTop