v0.1.57 — Real-Time GPS Tracking Station
GPS SATELLITESTRACKER
A real-time GPS satellite tracking dashboard using data from USB GPS Receivers
Docker containers and a lot of coffee and cake
Live Dashboard
0
Parquet Log Files Created
0
GB Total Data So Far
0
GPS Satellites Seen
0
Days to Build
0
Cups of Earl Grey
0
Cakes Consumed
Key Features
Real-Time Satellite Intelligence
A comprehensive GPS tracking dashboard with 3D globe visualisation, signal analysis, and real world satellite telemetry.
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.
System Architecture
How It Works
A five-container architecture: USB serial data ingestion via MQTT, visualised through a Flask web frontend.
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 producing structured parquet files from the MQTT subscriptions
Web Dashboard
Modern Flask application serving Three.js 3D globe, DuckDB-powered Parquet 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.
Get Started
Try the Live Dashboard
Explore the full GPS tracking interface with real-time satellite data, 3D globe visualisation, and signal analysis tools.
Launch Live Dashboard
About
The Project
A weekend hobby project turned experiment in agentic coding — building a personal GPS tracking station from scratch.
Creator
Robert Wolf
Machine Learning Engineer
LinkedIn
Facebook
YouTube
[email protected]
System Information
Created Date:
8th June 2026
Software Version:
v0.1.57
Parquet Log Files:
46 files
Total Data Size:
7.24 MB
Date Coverage:
2026-06-09 to 2026-06-19
Receiver Location:
53.383°N, 2.173°W
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 into hourly Parquet files. 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
DuckDB
Parquet
MQTT
Docker
TrueNAS SCALE
pynmea2
pyserial
Antigravity CLI
OpenCode
SSE
Orbitron UI
paho-mqtt
pyarrow
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
Try It Now
Launch the Dashboard
Visit the live dashboard to explore real-time GPS satellite tracking data.
Open Live Dashboard
Link preview
Real-Time GPS Tracking Station
v0.1.57 — Real-Time GPS Tracking Station GPS SATELLITESTRACKER A real-time GPS satellite tracking dashboard using data from USB GPS Receivers Docker containers and a lot of coffee and cake Live Dashboard 0 Parquet Log Files Created 0 GB Total Data So Far 0 GPS Satellites Seen 0 Days to Build 0 Cups of Earl Grey 0 Cakes Consumed Key Features Real-Time Satellite Intelligence A comprehensive GPS tracking dashboard with 3D globe visualisation, signal analysis, and real world satellite telemetry. 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. System Architecture How It Works A five-container architecture: USB serial data ingestion via MQTT, visualised through a Flask web frontend. 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 producing structured parquet files from the MQTT subscriptions Web Dashboard Modern Flask application serving Three.js 3D globe, DuckDB-powered Parquet 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. Get Started Try the Live Dashboard Explore the full GPS tracking interface with real-time satellite data, 3D globe visualisation, and signal analysis tools. Launch Live Dashboard About The Project A weekend hobby project turned experiment in agentic coding — building a personal GPS tracking station from scratch. Creator Robert Wolf Machine Learning Engineer LinkedIn Facebook YouTube [email protected] System Information Created Date: 8th June 2026 Software Version: v0.1.57 Parquet Log Files: 46 files Total Data Size: 7.24 MB Date Coverage: 2026-06-09 to 2026-06-19 Receiver Location: 53.383°N, 2.173°W 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 into hourly Parquet files. 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 DuckDB Parquet MQTT Docker TrueNAS SCALE pynmea2 pyserial Antigravity CLI OpenCode SSE Orbitron UI paho-mqtt pyarrow 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 Try It Now Launch the Dashboard Visit the live dashboard to explore real-time GPS satellite tracking data. Open Live Dashboard Source: https://www.linkedin.com/in/robert-b-g-wolf-816b392b/ gps-satellites.com · linkedin.com
Comments