A real-time 3D satellite tracking web application built with Three.js and TypeScript. Track thousands of satellites orbiting Earth with live position updates using official TLE data from CelesTrak.
- 🌍 Interactive 3D Earth Globe - Smooth rotation and zoom controls
- 🛰️ Real-time Satellite Tracking - Live position updates using Two-Line Element (TLE) data
- 🎯 Multiple Categories - ISS, Starlink, GPS, Weather, OneWeb, Amateur Radio satellites
- 🔍 Search & Filter - Find specific satellites by name or filter by category
- 📡 Orbital Visualization - Display satellite orbits and trajectories
- 🏷️ Smart Labels - Toggle satellite name labels on/off
- 🖱️ Hover Details - Hover over satellites to see detailed orbital information
- 👆 Click to Select - Click satellites to select and show their orbit
- ⚡ Optimized Performance - 10 FPS target, optimized for 1 vCPU / 2GB containers
- TypeScript - Type-safe development
- Three.js - 3D graphics rendering
- satellite.js - SGP4/SDP4 satellite position calculations
- Vite - Fast build tool and dev server
- CelesTrak API - Official NORAD satellite data
- Node.js 18+
- npm or yarn
- Install dependencies:
npm install- (Optional) Configure port by creating
.envfile:
PORT=8080 # Default is 5173- Start the development server:
npm run dev- Open your browser to
http://localhost:5173
npm run buildThe built files will be in the dist/ directory.
# Build and run with Docker Compose
docker-compose up -d
# Access at http://localhost:8080docker build -t satellite-tracker .
docker run -d --name satellite-tracker --cpus="1.0" --memory="2g" -p 8080:80 satellite-trackerSee DEPLOYMENT.md for detailed deployment guides including:
- Kubernetes deployment
- AWS ECS, Google Cloud Run, Azure Container Instances
- Resource configuration and scaling
- Monitoring and troubleshooting
- Production recommendations
- Data Source: Fetches Two-Line Element (TLE) data from CelesTrak's public API
- Propagation: Uses SGP4/SDP4 algorithms via satellite.js to calculate real-time positions
- Visualization: Renders satellites as colored dots on a 3D Earth globe using Three.js
- Updates: Updates satellite positions at 3.3 Hz (every 300ms) for optimal performance
- Rendering: Targets 10 FPS for smooth animation with minimal resource usage
- ISS & Space Stations - International Space Station and other crewed stations
- Starlink - SpaceX satellite constellation for internet
- GPS Operational - Global Positioning System satellites
- Weather - Weather monitoring satellites
- OneWeb - OneWeb satellite constellation
- Amateur Radio - Ham radio satellites
Total: ~5,000+ satellites
- Left Mouse - Rotate view
- Right Mouse / Scroll - Zoom in/out
- Hover over satellite - View detailed information (altitude, inclination, period, etc.)
- Click satellite - Select and show orbital path
- Search Box - Find satellites by name
- Category Filters - Show/hide satellite groups
- Show Orbits - Display orbital path for selected satellite
- Show Labels - Toggle satellite name labels
Satellite data provided by CelesTrak - NORAD Two-Line Element Sets
Optimized for ultra-low resource containerized environments:
- Target: 1 vCPU / 2GB memory
- Frame rate: 10 FPS
- Satellites: ~5,000+ (all categories)
- Stars: 1,000 (reduced for performance)
- Memory usage: ~400-600 MB
- CPU usage: ~30-40% of single vCPU
See PERFORMANCE_1vCPU.md for detailed optimization notes.
Previous config (2 vCPU / 4GB): See PERFORMANCE.md
MIT
Contributions are welcome! Please feel free to submit a Pull Request.