Skip to content

mansoorbarri/RadarThing

Folders and files

NameName
Last commit message
Last commit date

Latest commit

 

History

782 Commits
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 

Repository files navigation

RadarThing

RadarThing

A modern, real-time flight radar for the GeoFS flight simulator. RadarThing tracks live traffic, records flight history, overlays weather and airport data, and gives pilots and controllers a cleaner operating picture than the original GeoFS radar.

Quick Start

  1. Open radarthing.com.
  2. Install the GeoFS script from radarthing.com/userscript, or paste the console loader shown on the homepage into GeoFS DevTools.
  3. Open GeoFS and fly normally.
  4. Your aircraft appears on the radar automatically while the script is running.

Tampermonkey installs are persistent. Console installs use the same hosted loader, but they need to be run again after a full GeoFS page reload.

Features

Live Radar

  • Real-time aircraft stream from the RadarThing SSE service.
  • Click-to-track aircraft with detailed sidebar data.
  • Search and filtering by callsign, flight number, airport, or GeoFS user.
  • Multi-aircraft selection with side-by-side tracking.
  • Most-tracked flights panel showing what other users are watching.
  • Follow mode for keeping a selected aircraft centered.
  • Radar Mode map styling for a cleaner controller view.
  • Aircraft class icons for light, regional, heavy, business, military, and helicopter traffic.

Pilot and Controller Tools

  • Heading Mode for measuring headings between points on the map.
  • Remote aircraft commands for supported clients, including speed, altitude, heading, vertical speed, squawk, flaps, NAV/HDG mode, waypoint selection, autopilot toggles, and IDENT requests.
  • Flight plan drawing with waypoint speed and altitude details.
  • Waypoint ETAs and remaining route distance for active flights.
  • Conflict alerts with a recent review log.
  • Keyboard shortcut reference built into the radar dock.
  • Display unit preferences for speed and altitude.
  • Map layer presets for saving radar layer, weather, OpenAIP, and conflict-monitor setups.

Weather and Airport Data

  • METAR, D-ATIS, NOTAM, AIRMET, SIGMET, and precipitation layers.
  • Airport markers, frequencies, and live ATC indicators.
  • Airport charts for taxi diagrams, SIDs, STARs, and approaches.
  • Chart overlays directly on the map where supported.
  • Community chart uploads with moderation.
  • US airport charts are free; advanced global chart and weather access is part of RadarThing PRO.

Flight History and Community

  • Automatic flight recording with routes, duration, distance, max altitude, and max speed.
  • Flight replay from the dashboard or shared radar URLs.
  • Live route viewing before a flight has ended.
  • Shareable flight cards for completed flights.
  • Pilot dashboard with totals, streaks, top routes, airports, aircraft, account export, and subscription management.
  • Pilot profiles and a leaderboard for flights, distance, time, streaks, and approved image contributions.
  • Pilot challenges with automatic and manually reviewed goals.
  • Virtual airline support with callsign matching, members, admins, and VA-specific aircraft images.
  • Community aircraft image uploads and moderation.
  • Discord waypoint reminders through the RadarThing bot.

Free and PRO

Core tracking is free. RadarThing PRO unlocks more aviation data and analytics.

Free PRO
Live aircraft tracking Everything in Free
Search, filters, multi-select, and follow mode Full NOTAM access with decoded text
Flight recording and replay AIRMET and SIGMET overlays
Remote autopilot commands Global airport charts and procedures
Basic flight stats Full flight history and advanced analytics
Precipitation overlay Radar Mode and chart-focused workflows
Live ATC indicators and audio Shareable flight cards
Aircraft image uploads Subscription management through Stripe

Userscript Workflow

Editable userscript source files live in:

  • userscript.js
  • seabus.js
  • jth.js
  • userscript-src/radarthing-runtime.js
  • userscript-src/config.json
  • scripts/build-userscript.mjs

Generated userscript files are built into public/userscript/ and radarthing.user.js. Do not hand-edit or commit those generated artifacts. Rebuild them from source instead:

bun run build:userscript

The public install flow is:

  1. /userscript redirects Tampermonkey users to /userscript/radarthing.user.js.
  2. The installer loads /loader.
  3. The loader reads /userscript/latest.json.
  4. The current runtime bundle is loaded, with a stable bundle fallback.

Technical Details

App: Next.js 15, React 19, TypeScript, Tailwind CSS, shadcn-style UI components

Data: Convex for users, flight history, charts, aircraft images, virtual airlines, challenges, and moderation data

Realtime: SSE traffic stream served by the companion ../radar-sse service

Mapping: Leaflet with custom aircraft markers, weather overlays, chart overlays, and map layer presets

Auth and billing: Clerk, Stripe, UploadThing, Resend, and PostHog

Development

Install dependencies:

bun install

Run checks:

bun lint
bun typecheck
bun run check

Format code:

bun run format:write

Supporting services:

bun run cf       # Cloudflare tunnel
bun run stripe   # Stripe webhook listener

Convex development:

bunx convex dev

After changing files in convex/, run Convex locally and deploy the Convex changes with the project deploy process.

Convex Backups

Production Convex backups are exported by the Convex Backup GitHub Actions workflow and uploaded to UploadThing.

UploadThing free apps do not allow private files, so backups are encrypted locally before upload and stored as .zip.enc files. Treat BACKUP_ENCRYPTION_KEY like a production database password: keep it in a password manager. If this key is lost, existing encrypted backups cannot be restored.

Backup filenames are target-aware and human-readable, for example:

radarthing-prod-db-only-2026-05-07_08-00-00Z.zip.enc
radarthing-prod-db-and-files-2026-05-07_08-00-00Z.zip.enc

Required GitHub Actions repository secrets:

CONVEX_DEPLOY_KEY
UPLOADTHING_TOKEN
BACKUP_ENCRYPTION_KEY

Generate the encryption key with:

openssl rand -base64 48

Trigger a manual backup from GitHub:

  1. Open the repository on GitHub.
  2. Go to Actions.
  3. Select Convex Backup.
  4. Click Run workflow.

The workflow runs daily at 08:00 UTC and prunes encrypted UploadThing backups older than 30 days.

Run the backup locally:

bun run backup:convex -- --label prod --retention-days 30

Sync production data into the default Convex dev deployment for local testing:

bun run sync:convex:prod-to-dev

The sync script exports a backup of the current dev deployment first, then replaces the default dev deployment with production data via convex import --replace-all. It refuses to run if CONVEX_DEPLOY_KEY is set.

Include Convex file storage:

bun run backup:convex -- --label prod --include-file-storage --retention-days 30

Decrypt a downloaded backup:

BACKUP_ENCRYPTION_KEY="<same key used for backups>" bun run backup:convex -- \
  --decrypt ./radarthing-prod-db-only-2026-05-07_08-00-00Z.zip.enc \
  --output ./radarthing-prod-db-only-2026-05-07_08-00-00Z.zip

Restore with Convex after decrypting, preferably into a non-production deployment first:

bunx convex import ./radarthing-prod-db-only-2026-05-07_08-00-00Z.zip

Environment Variables

Environment variables are validated in src/env.js using T3 Env. Server-side variables include Clerk, Stripe, UploadThing, and Resend keys. Client-side variables must use the NEXT_PUBLIC_ prefix. Add new variables to .env.example when introducing them.

Issues and Feedback

Found a bug or have a suggestion? Open an issue on GitHub or join the RadarThing Discord from the homepage.