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.
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).
GET /api/health— liveness probe.POST /api/trace— body{ "url": "https://example.com" }. Returns a fullTraceResultwith 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.
GeoIP lookups are local — no third-party API calls. The MaxMind .mmdb
files in server/ are loaded once at startup by server/geoip.ts.