Real-time International Space Station tracker with live telemetry, orbital pass predictions, and NASA video feeds on an immersive full-screen map.
After stargazing with my kids one night, I wanted a single screen that showed where the ISS was and a live view from its cameras — without juggling a satellite tracking app and YouTube. This started as a vanilla JS prototype and evolved into a production app with its own backend computing real orbital mechanics.
Live at iss.jimchristian.net
Browser (Svelte SPA)
|
|-- WebSocket (direct) --> VPS Backend (Node.js, Docker)
| |-- TLE fetch (CelesTrak, every 6h)
|-- REST -----------------> |-- ISS position (satellite.js SGP4)
|-- Pass predictions
|-- Crew data (open-notify)
cd frontend
npm install
npm run dev # http://localhost:5173
npm run build # Production build to dist/
cd backend
npm install
npm run dev # http://localhost:3848
npm test # 27 tests
Create frontend/.env:
VITE_API_URL=https://iss.jimchristian.net/api
VITE_WS_URL=wss://iss.jimchristian.net/ws
For local development, point at a local backend:
VITE_API_URL=http://localhost:3848
VITE_WS_URL=ws://localhost:3848/ws
./deploy.sh # Build + deploy frontend to VPS
./deploy-backend.sh # Deploy backend Docker container to VPS
| Layer | Technology |
|---|---|
| Frontend | Svelte 5, Vite, Leaflet.js, anime.js |
| Backend | Node.js, Fastify, satellite.js |
| Infrastructure | Docker, nginx, IONOS VPS |
| Edge cache | Cloudflare Workers |
MIT - see LICENSE