All projects

AeroGlobe

In active development · data pipeline & 3D visualization

A browser-based 3D globe for flight tracking. It is a work in progress: the pieces described here exist today, and the parts marked as planned do not.

Work in progress. The repository is being built right now, so this page will change. It describes the state of the code in October 2026. There is no public demo to link to yet.

At a glance

257 passing tests in 32 files, with lint, type-checking and the production build all clean

4 stages in the data pipeline: normalize, segment, chunk, catalog

4,900 lines of TypeScript across the client, server, pipeline and shared code

The problem

Most flight trackers show what is in the air now. I wanted to look at flights that have already happened: where an aircraft went, how a route looked over a day, and what a busy hour of global traffic looks like on a globe. That is a data problem before it is a graphics problem. Bulk historical flight logs are large, free and awkward, and a live API gives you only a short window.

My first version was live-first, polling an API every 15 seconds. Auditing it showed that a historical view needs a different shape: process the data ahead of time, publish it as static files, and let the browser do the rest.

Approach

The client is React and TypeScript with CesiumJS for the globe. State lives in Zustand stores, and search and filtering work on a set derived from the flight store. A small Express server proxies the live feed for local development.

The data side is a Node and TypeScript pipeline. It takes state vectors, turns them into per-aircraft tracks, splits each track into flights, slices the tracks into hourly chunks and writes a catalog. The output is plain JSON that a static host can serve, so there is no database and no always-on API. The pipeline puts a size limit on each hourly chunk and throws an error when a chunk goes over it.

What I built

What is planned

The design spec for the next stage is a draft. In outline:

None of these is built yet, and the spec may change as I build.

What I’m learning

Stack

TypeScript React CesiumJS Zustand Vite Node Express Vitest