Underground 2 Revived
Play Need for Speed: Underground 2 (2004) in Chrome and Firefox with WebGPU graphics, Web Audio, up to 120 fps widescreen, controller support, free roam and Online races with friends. Fan project, not
Real-time aircraft tracking for GeoFS flight simulator. Track flights, record routes, access aviation weather, airport charts, and more.
GamesTypeScript · JavaScriptGitHub @mansoorbarriOnlineOwner unconfirmed
Have you tried it? One tap is enough. No sign-in needed.
No updates detected yet. GitHub releases will appear here.
Owners of public repositories under a personal GitHub account can sign in to verify ownership and manage the introduction themselves. No administrator approval is needed.
Sign in, generate a verification file, and commit it to this repository’s default branch within 30 minutes. Files on other branches or forks do not count. Then check the file below to manage the project without administrator approval. Keep the file to retain your access.
If needed, you will go to sign-in. After signing in, return here and press your chosen verification button again.
Run /nomorevibe verify in your project folder to verify ownership and manage the introduction yourself.
Verify in one minuteAsk about other verification options
A radar for GeoFS
Translation pending
Taken from the repository README
Loading the full README.
Read the full README ↗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.
Tampermonkey installs are persistent. Console installs use the same hosted loader, but they need to be run again after a full GeoFS page reload.
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 |
Editable userscript source files live in:
userscript.jsseabus.jsuserscript-src/radarthing-runtime.jsuserscript-src/config.jsonscripts/build-userscript.mjsGenerated 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:
pnpm run build:userscript
To test unpublished userscript changes in GeoFS, run pnpm run build:userscript:dev and install the generated radarthing.dev.user.js in Tampermonkey. This standalone build uses the current branch code and sends ACARS requests to http://localhost:3000; run pnpm dev for the local website and API. Disable the regular RadarThing userscript while testing to avoid loading both copies. The local app needs its Convex functions configured for ACARS publishing.
The public install flow is:
/userscript redirects Tampermonkey users to /userscript/radarthing.user.js./loader./userscript/latest.json.ACARS entries can be published from the GeoFS panel after saving an active flight, provided the GeoFS ID is linked to a RadarThing account. They appear on RadarThing as soon as the pilot publishes or removes them. A local word filter checks text before publication; edit src/lib/acars-moderation.ts to update its blocked words. Viewer reports and blocked submissions are reviewed by RT ID at /admin/acars-moderation.
Aircraft SVG icons in public/icons/aircraft/adsb-radar/ are by ADS-B Radar for macOS: https://adsb-radar.com, App Store listing.
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
Install dependencies:
pnpm install
If pnpm is not installed yet, enable it through Corepack first:
corepack enable
Run checks:
pnpm lint
pnpm typecheck
pnpm run check
Format code:
pnpm run format:write
Supporting services:
pnpm run cf # Cloudflare tunnel
pnpm run stripe # Stripe webhook listener
Convex development:
pnpm run convex:dev
After changing files in convex/, run Convex locally and deploy the Convex changes with the project deploy process.
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:
The workflow runs daily at 08:00 UTC and prunes encrypted UploadThing backups older than 30 days.
Run the backup locally:
pnpm run backup:convex -- --label prod --retention-days 30
Sync production data into the default Convex dev deployment for local testing:
pnpm 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:
pnpm run backup:convex -- --label prod --include-file-storage --retention-days 30
Decrypt a downloaded backup:
BACKUP_ENCRYPTION_KEY="<same key used for backups>" pnpm 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:
pnpm exec convex import ./radarthing-prod-db-only-2026-05-07_08-00-00Z.zip
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.
Found a bug or have a suggestion? Open an issue on GitHub or join the RadarThing Discord from the homepage.
Guide copy lives in content/guides/*.md as plain Markdown. Edit those files to update the public /guides/[slug] pages; JSX is not needed for article content. The server renders Markdown with react-markdown (raw HTML is not enabled).
To add a guide, create a Markdown file with one H1 title and add its slug, title, and description to src/lib/guides.ts. That registry drives navigation, static routes, metadata, and sitemap entries. Use root-relative links for site pages. Check instructions against the current UI and subscription limits before publishing.