GPS Satellites Tracker

5 min read Original article ↗

v0.1.57 — Real-Time GPS Tracking Station

GPS SATELLITES
TRACKER

A real-time GPS satellite tracking dashboard using data from a Raspberry PI and a USB GPS Receiver with docker containers and a lot of coffee and cake

0 Data Rows Saved

0.00 GB Total Data So Far

0 Satellites Seen

0 Days Running

0 Cups of Earl Grey

0 Cakes Consumed

3D Globe View

Interactive Three.js globe displaying satellite positions, orbital paths, and real-time tracking with multiple camera perspectives, zoom and pan controls

Signal Analysis

Real-time SNR monitoring with bar charts, line plots, skyplot radar view, and historical sparkline telemetry for each satellite.

Satellite Directory

Browse all GPS satellites with spacecraft specifications, launch history, constellation block details, and real-time status.

Historical Playback

Time-travel through logged GPS data with a timeline slider, variable playback speeds, and frame-by-frame analysis.

Receiver Management

Track multiple GPS receiver locations simultaneously with coordinate display, error scatter plots, and CEP accuracy metrics.

Real-Time Telemetry

Live SSE streaming of GPS data with auto-refresh, instantaneous satellite position updates, and signal quality monitoring.

USB GPS Receiver

Cheap USB GPS module connected via serial port, outputting standard NMEA 0183 over serial.

Backend Pipeline

Raspberry Pi parsing NMEA data, computing satellite positions, and publishing structured telemetry to MQTT brokers.

Processing Service

Docker based Python processing service persisting real-time satellite telemetry into a PostgreSQL database from MQTT subscriptions.

Web Dashboard

Modern Flask application serving Three.js 3D globe, Postgres-powered database queries, and SSE streaming for live updates.

Coming Soon

Build or buy a tracking device to stream your own telemetry and geo-location data directly to the server.

Future Hardware Support

Support for the battery powered LILYGO TTGO T-A7670G ESP32 based board with global 4G LTE and GPS.

Launch Live Dashboard

About

The Project

A weekend hobby project turned experiment in agentic coding — building a personal GPS tracking station from scratch.

The Story

Inspired by a recent Veritasium video on GPS jamming over Europe and Canada "Something is jamming GPS over Europe. Here's what we found", I decided to kick off a weekend hobby project to build a personal GPS tracking station. My goal wasn't just to log data, but to run an experiment in using agentic coding to help me.

I picked up a cheap USB GPS receiver, fired up my development server running TrueNAS SCALE, and used Google's Antigravity CLI to build a two-container architecture: a backend to ingest USB serial data, and a friendly web frontend. Within three hours and about 50 to 60 micro-revisions through the CLI, I had a working Docker container logging GPS data directly into a PostgreSQL database. I never touched a single line of backend code in that first three house and the code quality was good.

Next up was the WebUI. I built it panel by panel, feature by feature completely through the Antigravity CLI. While the AI nailed vague prompts perfectly most of the time, it also went down some bizarre rabbit holes. I frequently had to step in as the "Senior Dev" to course-correct.

Out of the entire build, only a couple of bugs regarding the time slider defeated the agent, requiring me to step in and manually tweak the code.

I will be updating the website from time to time. If you have any problems please wait a few minutes as I'm probably updating the code and docker container behind the scenes.

Technology Stack

Python 3.13 Flask Gunicorn Three.js PostgreSQL psycopg2 MQTT Docker TrueNAS SCALE pynmea2 pyserial Antigravity CLI OpenCode SSE Orbitron UI paho-mqtt SQL

GPS-Tracker

Tracking Dashboard

A full-featured GPS satellite monitoring interface with three interconnected views: 3D globe, signal noise analysis, and satellite directory.

TACTICAL 3D

Orbital perspective with live satellite positions, orbital paths, and real-time tracking overlays

ERROR HEAT MAP

GPS accuracy error distribution with colour-coded heat overlay showing positional uncertainty zones

EARTH VIEW

Clean Earth perspective with continent outlines and lat/lon grid for global spatial context

3D Globe View

Interactive Three.js-powered globe with multiple viewing modes:

  • Tactical 3D – orbital perspective with satellite positions
  • Observer Zenith – view from receiver looking up
  • Trajectory – orbital satellite path visualisation
  • Time-Space – temporal positioning view
  • Error Heatmap – GPS accuracy heat overlay

Signal Noise Analysis

Comprehensive signal quality monitoring tools:

  • Real-time SNR bar chart for all visible satellites
  • Historical SNR line plots with time navigation
  • Signal statistics (avg, max, min SNR)
  • Skyplot polar radar view of satellite positions

Satellite Directory

Detailed spacecraft information database:

  • PRN identification and spacecraft names
  • Constellation block and manufacturer data
  • Launch dates and vehicle information
  • Real-time status and visibility tracking

Historical Playback

Time-travel through logged GPS data:

  • Interactive timeline slider for frame navigation
  • Playback at 1x, 2x, 5x, 10x, 20x speeds
  • Multi-timezone time display
  • Proximity alerts and path limit warnings

Real-Time Telemetry

Live data streaming:

  • Sub-satellite latitude/longitude coordinates
  • Altitude, elevation, and azimuth angles
  • Range-to-receiver distance calculation
  • Signal SNR history sparklines

Receiver Management

Multi-receiver GPS tracking support:

  • Multiple receiver coordinate display
  • GPS error scatter plot visualisation
  • Circular Error Probable (CEP) metrics
  • Per-receiver historical data analysis