Ilya Minchenko
All projects

flight-az

Real-time aircraft radar

Role
Fullstack developer
Period
Side project

An air traffic map: you pick a point and a radius, and the app pulls aircraft from FlightRadar24 every second, drawing them on the map along with their trails, heading and altitude.

Besides position, each aircraft gets a range and bearing from the chosen point — haversine distance and bearing computed directly, without a geo library. The project grew out of the simple question of what is flying overhead right now.

What I did

  • An Express proxy in front of FlightRadar24, so the client never calls the external API directly and does not run into CORS or rate limits.
  • Range (haversine) and bearing computed in-house rather than pulled from a geo library.
  • Markers, popups and trails on MapLibre GL: layers are created and torn down along each aircraft's lifecycle, with no leaks or duplicated sources.
  • Migrated from Mapbox to MapLibre with open OpenFreeMap tiles, removing the third-party account whose quota once made the map fail silently.
  • Server-side response cache: everyone watching the same area is served by a single upstream request, and if the source fails the last known aircraft list is returned instead of an empty one.
  • A self-rescheduling polling loop that stops cleanly when the search point changes — otherwise timers pile up and requests go out in bursts.
  • Docker Compose for client and server, deployment through GitHub Actions.

Interface

Live aircraft on a MapLibre map: callsigns, trails and the search radius circle around the chosen point

Stack

  • React
  • MapLibre GL
  • Node.js / Express
  • Docker
  • GitHub Actions