siinghd/webtrace

Visual traceroute on a 3D globe — Bun/Hono server with offline MaxMind GeoIP frontend

★ 0Forks 0TypeScriptGitHub ↗Compare

README

webtrace

Visual traceroute on a globe. Enter a URL and watch the request hop across the planet in real time, with each network hop geolocated and drawn on an interactive 3D map.

  • Server: Bun + Hono. Performs the trace and streams hops over SSE; uses bundled MaxMind GeoLite2 (City + ASN) for offline IP geolocation.
  • Client: React 19 + Vite + Tailwind v4, with MapLibre GL rendering the globe and animated hop arcs.

Quick start

bun install
bun run dev       # vite dev server (frontend)
bun server/index.ts   # hono API (trace + SSE)

Production builds use vite build plus the same bun server/index.ts entrypoint behind nginx (see nginx.conf) and PM2 (ecosystem.config.cjs).

API

  • GET /api/health — liveness probe.
  • POST /api/trace — body { "url": "https://example.com" }. Returns a full TraceResult with user location, server location, and the ordered list of hops.
  • GET /api/trace/stream?url=… — same trace, streamed hop-by-hop over SSE for live globe animation.

Data

GeoIP lookups are local — no third-party API calls. The MaxMind .mmdb files in server/ are loaded once at startup by server/geoip.ts.

Contributors

siinghd

Issues