Skip to content
All work
Case study · 06

Pulse

The planet, live: a 3D Earth with every flight, ship, earthquake and satellite moving on it right now.

Open PulseNo signup
Status
In development
Context
Personal project
My role
Product, design & engineering
Category
Real-time data
Year
2026
pulse.asrar.software
The globe over Asia in daylight, with clouds, the sun glinting on the Pacific, the ISS and its orbit, earthquake rings around Japan and Indonesia, and thousands of tiny aircraft.

Real-time data · Web app · 3D · 2026

Open the page and the Earth turns under the real sun, with tens of thousands of aircraft and ships, the ISS, earthquakes, wildfires, storms and the aurora, all fed by public data and streamed to your browser as it happens.

The story

How I built it

My role
Product, design & engineering
Context
Personal project

The problem

[01]

Public live data about the planet is everywhere, but it lives in separate tools: a flight tracker, a ship map, an earthquake feed, a satellite catalogue. Each has its own map and its own refresh button, and none of them shows how much is happening on Earth at the same moment.

What I built

[02]

Pulse puts it all on one globe. A small real-time server polls or streams each source within its rate limits, keeps the live state in memory and pushes compact updates to every visitor over a single WebSocket. The browser draws everything in one WebGL scene, with each layer drawn in a single call and aircraft and ships moving along their heading on the GPU until the next update. Turn a layer off and its data stops coming to your browser.

Key decisions

[03]
  1. One WebSocket, typed both ways

    A Zod protocol shared by the server and the browser: a snapshot on connect, then small compressed updates, only for the layers a visitor has turned on.

  2. 30,000 objects, still smooth

    Aircraft and ships are drawn as instanced meshes and moved along great circles on the GPU between updates, so the globe stays fluid without streaming every position.

  3. Within every rate limit

    OpenSky is polled every 90 seconds to fit its 4,000 daily credits, orbital data is cached for six hours, and the last results survive restarts, so redeploys cost nothing.

The result

  • 30k+Aircraft and ships on the globe at once
  • 7Live public data sources
  • 1WebSocket for everything
Screens

The real product

Screenshots of the product running on live data, as it was on 11 October 2026. Open any of them full size.

  • [01]Every source can be turned off, and its data stops coming to the browser.

  • [02]The night side, where the real sun puts it right now.

  • [03]Click any aircraft for its altitude, speed, heading and how fresh the data is.

  • [04]Ships from the AIS network, along every coast and shipping lane.

  • [05]The aurora forecast from NOAA, drawn over the pole.

  • [06]Light and dark themes.

Features

What it does

I build real-time systems end to end: a WebSocket gateway fed by several live sources, a typed protocol shared with the browser, and a WebGL scene that stays smooth with tens of thousands of moving objects.

[01]

A real Earth

NASA imagery with relief, clouds, city lights on the night side, sun glint on the oceans and a thin atmosphere, all lit by the subsolar point computed for the current time.

[02]

Flights and ships

Around 5,000 to 10,000 aircraft from the OpenSky Network and over 20,000 ships from aisstream.io, drawn as instanced meshes and moved along great circles on the GPU between updates.

[03]

Space overhead

The ISS with its orbit, plus about 150 of the brightest satellites and the Tiangong station, propagated from CelesTrak orbital data every second.

[04]

Earth in motion

Earthquakes of the past day from USGS, wildfires, storms and volcanoes from NASA EONET, and the aurora forecast from NOAA drawn as a glowing oval over the poles.

[05]

One live connection

A WebSocket gateway with a Zod protocol shared by server and browser: a snapshot on connect, then small updates for the layers you have on, compressed on the wire.

[06]

Who else is here

A live count of people looking at the planet, and an optional layer that shows where they are, rounded to the city.

Built with

The stack

Typed end to end and rendered on the server by default, with the rest chosen for what this product needed.

  • Next.js
  • React
  • TypeScript
  • Three.js
  • Tailwind CSS
  • Node.js
  • PostgreSQL
  • Prisma

Hiring? Let's talk.

Tell me about the role and the team. I reply within one business day.