Product · Brand · Engineering · Aug 2026 – now

A live map of the sky, in three dimensions

Aircraft anywhere the world's community receivers can hear them, drawn where they are in the air, carried smoothly between reports, on a basemap I drew for it. Free, and the map needs no account. I started it in August 2026 and built every part of it myself. It is still shipping. The last deploy was this week.

Client
Own venture
Role
All of it. Product, identity, interface, the basemap, the rendering, the service that reads the feeds and shares them with every open browser, the airfield and weather data, and the writing.
Stack
TypeScript, Next.js, React, deck.gl, Mapbox GL, Vitest, Vercel, Fly.io, Claude Code
The map

Boot over the map, not in front of it.

The first thing you see is the product. The boot sequence is transparent: the basemap runs underneath at its real camera and the rows above it report what is actually connecting, in words, never a percentage. When it is done it gets out of the way.

Everything after that is ink on obsidian. Colour appears only where it means something. The accent is spent on runways, on the selected aircraft, and on the one action a panel offers.

Basemap and motion

Altitude is a place, not a number.

Most trackers put altitude in a panel. Here an aircraft is drawn where it is in the air, with a line down to the ground beneath it, so a climb-out, a descent and a holding stack look like what they are. Plan view is the working surface. The three-dimensional camera is a mode you switch on when one approach corridor matters more than the whole region.

Reports arrive sparse and out of order. Between them each aircraft is carried forward on its own heading and speed rather than jumped, so motion reads as flight. Measured end to end, the drawn position sits within about thirty metres of the reported one.

The basemap is mine. The style I started from drew a cruising jet in almost the same tone as the highway under it. I pulled the roads back into structure, saved the accent for runways, and gave the coastline its own stroke so two near-black fills could still separate. The map is the ground and the aircraft are the subject.

The Los Angeles basin from above, at night, pitched
The basin, pitched33.8700, −118.0500 · z9.5 · pitch 62° · bearing 20°
San Francisco International, pitched, runways in the accent
A field, pitched37.6188, −122.3785 · z14.2 · pitch 68°
Los Angeles International on the field
Los Angeles, on the field33.9425, −118.4080 · z13.6 · pitch 66°
30 m
Drawn position, measured
14
Airframes, built from the transponder's type
3
Receiver networks, read once a second
60°S – 72°N
Watched where people are looking
Boot and onboarding

The boot, as it ships.

The hero above is a recording from an earlier build. This is the sequence that ships now: six checks that settle to Ready, OK or a real failure, in words, over a map that is still dimmed and gridded. Then the welcome, three things the product does and a sign-in, and only when it closes does the veil lift.

Boot stagesix checks · words, never a percentage
The welcome dialog: what Alārium does, how to move the camera, and a sign-in
Welcomeopens over the dimmed map · email and a six-digit code
Aircraft

The panel opens beside the aircraft.

Select one and the panel says who it is, what it is, a photograph where one exists, and the three readings somebody selected an aeroplane for: altitude, ground speed, heading. Then the observed profile as a chart, the route, and the registration's country. Follow it and the camera holds it centred while it climbs out, and the stream keeps sending it even when it outruns the screen.

Search takes whatever you have. A callsign, a tail number, a transponder hex, an airport, a city. Filters narrow the sky by status, category, altitude band, climb or descent and operator, and any combination can be saved as a named view once you have an account.

The two panels
The aircraft panel

Three tabs, and what is true on every one stays pinned.

Who this is, what it is, the photograph or the drawing, and the three readings somebody selected an aeroplane for. Those never move when the tab does. Status carries the route, the observed profile and the FAA word on both ends. Aircraft carries the airframe, the registry and the transponder's own figures. Cockpit reads the autopilot: heading, target altitude, pressure setting and the modes it is flying.

Where no photograph exists the panel draws the aircraft instead. Fourteen airframes, picked from the transponder's type code, drawn to their real wingspan.

Aircraft panel, Status tab: route, progress, FAA status, observed profile
Statusroute · profile · FAA
Aircraft panel, Aircraft tab: type, wingspan, registration, ICAO 24-bit, signal
Aircraftairframe · registry · signal
Aircraft panel, Cockpit tab: heading, target altitude, pressure, autopilot modes
Cockpitheading · target altitude · modes
Eight of the fourteen airframes, drawn top-down to wingspan
Airframes, drawn from the type codetop view · wingspan to scale
Knowing

Routes are checked, not trusted.

About half the traffic flies under a tail number rather than an airline callsign, and no route database holds a flight plan for those. So Alārium watches instead: an aircraft low over a field, climbing hard, has just departed it. Nobody filed that. It was observed, and it works the same for a Cessna as for a 737.

Where a filed route exists it is checked against the live track before being shown. Roughly three filings in five describe a leg the aircraft is not flying, because callsigns are reused, so a filing the aircraft's own position contradicts is withheld. I would rather show unknown than show something confident and wrong.

A US flight number also carries a history. Department of Transportation on-time data says what that number usually does, when it tends to land and how often it was on time. That is a record of past months, not today's schedule, and it is labelled as one.

Airports

Every field has a page. The tracked ones get more.

The airport panel says its window in the label: today, the last seven days, the last thirteen, and how much of that window was actually watched. Current conditions from the field's own METAR, including density altitude and the runway the wind favours, which are the two figures pilots reach for and most weather sources leave out. For US fields, the FAA's own notices, with the reason the FAA gave.

Beyond the map, 25,249 airfields in 121 countries have a page of their own: runways drawn to their true orientation from published thresholds, elevation, local time and the nearest neighbours, from the largest hubs to single grass strips. About 2,400 of them are prerendered; the rest render on demand.

Los Angeles International. Every runway drawn from its published thresholds, then tabulated.
The airfields index: 121 countries, 777 regions, 25,249 fields
The KLAX page on a phone
The airport panel
Airport panel, Field tab: the plate to scale, local time, elevation, movements with their window
Fieldplate to scale · movements say their window
Airport panel, Weather tab: conditions, wind, humidity, dew point, pressure, visibility, ceiling, density altitude
WeatherMETAR · density altitude · raw observation
Airport panel, Runways tab: each runway with length, width, surface, lights, the one into wind marked
Runwaysinto wind · length · surface · lights
Alerts and account

Told when it lands, in a passenger's words.

With an account, Alārium will tell you when a flight lands. Set it from any aircraft on the map, or by typing a flight number and its destination, which works before the aeroplane has pushed back. Signing in is an email address and a six-digit code. There is no password and nothing to pay.

Alerts arrive by email, on your device, or both, and the account panel is two subjects in two columns: what is true about you, and what is true about your flights. Every state is written for somebody waiting on an aeroplane. Watching, best effort, not seen, landed. When the limit is ours, the alert says so and points you to the airline. An honest state must never read as bad news about the flight.

Every state, in a passenger's wordswatching · best effort · landed
Notifications: this device and email, two switches, a blocked browser says why
Two channels, two switchesdevice · email · both off gets a sentence
Every width

Every width, hit-tested.

The sweep runs at 375, 768, 901, 1280 and 1920, hit-testing every control with the document, not the eye. It found the map controls dead under the glass panel below 1016 pixels and a phone sheet whose primary button rendered off the bottom of the screen. Both are fixed by rules, and the rules are written down.

On a phone the panels become a sheet on a ladder of detents. The photograph is the one thing allowed to shrink, and below the full detent it is not there at all rather than squashed. Below 940 pixels the account panel's two columns become two views, never one scroll.

The about page on a phone
The airfields index on a phone
The KLAX page on a phone
Sheets on a ladder of detents
The welcome dialog on a phone
The aircraft panel as a sheet on a phone
The airport panel as a sheet, runways tab
The cockpit tab as a sheet
6
Boot checks, in words
3
Tabs on each panel
3
Unit systems: aviation, imperial, metric
2
Alert channels, each its own switch
About and identity

The about page is chapters, and its figures are the product.

Seven numbered chapters, each a sticky side that names the question and a body that answers it, a figure first. Every figure is drawn from the product itself, never an illustration of it: the wireframes are the 3D layer's own meshes projected into SVG at build time, the coverage grid is the real cell table, the runway plate is the same geometry the airport page draws. A picture of a rule that is not the rule goes stale the first time the rule moves. These cannot.

Monitor aircraft above North America. Real altitudes, live tracks, in 3D.

The lockup, arriving the way the product boots. The mark draws in the accent, the letters rise, the macron lands, the line types.

The contact page: what helps, and a form read by one person
Contactone person reads it
The share card
Share carddrawn with next/og from the same tokens
54k
Lines of TypeScript, data and tests aside
1,783
Tests across 124 files
25,249
Airfield pages, 121 countries
5,019
Fields the map tracks
The milestone

We watched North America. Now we watch the World.

On 4 September 2026 coverage went global. The map that had watched one continent for eight months now reaches from 60 degrees south to 72 degrees north, on a world grid that keeps the metros warm all day and polls a hub abroad while the spare budget holds it.

I made the announcement the way the product is made. The globe is the real airfield data, every point a field Alārium knows, drawn in the product's own palette, and the counters run to the real numbers. Three cuts for three feeds: the film, a story, and a pass across the flat map.

The film16:9 · 14 s · counters run to the real numbers
The story9:16 · same film, restacked
The pass16:9 · one scan across the flat map
5,019
Airports the map tracks
25,249
Airfields with a page
239
Countries and territories
60°S – 72°N
Watched, wherever receivers reach
Process

Designed in code, written down as it went.

I had designed products for a decade and never shipped one myself. Alārium is the first. I started in Figma for about a week, then moved into Claude Code and stayed there, designing in the browser against the live feed, because the thing that needed judging was motion and density and both only exist at runtime.

The repo carries the reasoning: a two-thousand-line design record, an architecture log, and an audit of the three bugs that 127 passing tests missed, which is where the engine's accuracy came from. The Figma file is the marketing storyboard now, not the source of truth. That inversion is the story of this project, and of the last year of my work.

More work