Real-time satellite tracking and collision prediction for a safer orbital environment
Sentinel is an advanced space traffic management system built for SkyHacks 2025. It provides real-time visualization and collision prediction for satellites and space debris in Low Earth Orbit (LEO), helping operators make critical decisions to avoid catastrophic collisions.
With the increasing density of satellites (60,000+ expected by 2030) and millions of debris fragments, Sentinel addresses the urgent need for intelligent space traffic monitoring through an intuitive, aerospace-themed interface.
- π Real-time 3D Visualization: Interactive globe with 260 satellites and 1,500 debris objects
- β‘ Collision Prediction: Stochastic multi-hazard detection with dual severity levels
- π― Smart Maneuver Suggestions: Delta-V calculations and automatic alert broadcasting
- β±οΈ Time Travel: Sub-second precision time scrubbing (past/future simulation)
- π¨ Aerospace UI Design: Modern futuristic interface with glassmorphism effects
- π Multi-tier Warnings: CRITICAL (direct collision) vs MODERATE (proximity pass)
- πΈ Satellite-on-Satellite Detection: Rare but catastrophic collision scenarios
- π Real-time Updates: Dynamic threat assessment with countdown timers
- π Training Simulator: Standalone simulation environment for mission control training
- π― SVG-Based Icons: High-quality scalable icons for all UI elements
Beautiful Material You design with 3D wireframe globe and smooth animations.
- Left Panel: Search, sort, collision warnings, maneuver suggestions
- Center: Interactive 3D globe with orbital paths
- Right Panel: Satellite info, mission briefs, ground station passes
- Bottom: Time scrubber and collision alert strip
π‘οΈ PROXIMITY ALERTS (6)
βββ π°οΈ ISS (ZARYA) - SAT-COLLISION - 0.05 km - T-00:12:34
βββ π‘οΈ FRAGMENT-COSMOS-4521 - CRITICAL - 2.15 km - T-00:45:12
βββ π‘οΈ SHARD-FENGYUN-7834 - CRITICAL - 3.87 km - T-01:23:45
βββ β οΈ CHUNK-DELTA-2156 - MODERATE - 12.34 km - T-02:15:30
βββ β οΈ PARTICLE-PROTON-9823 - MODERATE - 24.56 km - T-03:42:18
βββ β οΈ SPLINTER-ARIANE-5621 - MODERATE - 38.21 km - T-04:55:00
- React 18 - Modern UI framework with hooks
- Vite 5.4.21 - Lightning-fast build tool and dev server
- React Three Fiber - React renderer for Three.js R128
- @react-three/drei - 3D scene helpers (OrbitControls, Billboard, etc.)
- Framer Motion - Declarative animations and transitions
- GSAP - High-performance timeline animations
- Axios - HTTP client for API communication
- Material Symbols - Google icon set
- Node.js 18+ - JavaScript runtime
- Express.js - Lightweight REST API framework
- CORS - Cross-origin resource sharing middleware
- Static Data Generation - Pre-computed orbital elements
- Three.js R128 - WebGL-based 3D rendering engine
- OrbitControls - Camera manipulation with zoom/pan/rotate
- Billboard Sprites - Camera-facing satellite markers
- Wireframe Geometry - Low-poly globe visualization
- Keplerian Orbital Mechanics - Two-body satellite propagation
- Stochastic Collision Modeling - Probabilistic debris generation
- GMST Calculations - Greenwich Mean Sidereal Time for Earth rotation
- Delta-V Calculations - Maneuver cost estimation
- ECI Coordinate System - Earth-Centered Inertial reference frame
- Cascadia Code Font - Monospace aerospace aesthetic
- Glassmorphism UI - Frosted glass panels with backdrop blur
- Aerospace Theme - Custom color palette (#00C8FF primary, #006C99 secondary)
- SVG Icons - Scalable vector graphics replacing emojis
- Dark Theme - Eye-friendly for mission control operations
node >= 18.0.0
npm >= 9.0.0
git- Clone the repository
git clone https://github.com/atharvavdeo/Sentinel---SkyHacks25.git
cd Sentinel---SkyHacks25/orbital-guard- Install backend dependencies
cd backend
npm install- Install frontend dependencies
cd ../frontend
npm install --legacy-peer-depsNote: --legacy-peer-deps resolves React 18 peer dependency conflicts
- Generate orbital data (optional)
cd ../backend/scripts
node generate_keplerian.jsPre-generated data is already included in backend/data/orbitalData.json
- Start the backend server
Windows PowerShell:
cd ..\backend
node server.jsLinux/Mac:
cd ../backend
node server.jsBackend will start on http://localhost:3001
- Start the frontend (new terminal)
cd frontend
npm run devFrontend will start on http://localhost:5173 (or next available port)
- Access the application
- Main Tracker:
http://localhost:5173 - Training Simulator:
http://localhost:5173/index5.html
-
Landing Page (
Landing.jsx)- Animated 3D wireframe globe with GSAP spiral effects
- Two main action buttons:
- Launch Tracker β Main satellite tracking application
- Open Simulation β Training environment (opens
index5.html)
-
Main Tracker Interface (
App.jsx)-
Left Panel:
- Search bar with satellite name autocomplete
- Sort dropdown (Name/Hazards/Altitude)
- Comparison statistics panel
- Scrollable hazard list with severity indicators
- Maneuver suggestion panel with Delta-V calculations
-
Center View:
- Interactive 3D globe with Earth texture
- Orbital paths for satellites
- Billboard sprites for satellites and debris
- Mouse controls (rotate, zoom, pan)
-
Right Panel:
- Selected satellite information
- Mission brief and specifications
- Ground station pass predictions
-
Bottom Bar:
- Time slider (bottom-right) with playback controls
- Speed adjustment (0.0005x to 10x)
- Collision alert strip showing active threats
-
-
Training Simulator (
index5.html)- Standalone Three.js simulation
- Mission control training scenarios
- Aerospace-themed UI with Cascadia Code font
- Real-time orbital mechanics demonstration
User Action β Search/Click Satellite
β
State Update β setSelectedSat()
β
API Call β POST /api/predict-hazard
β
UI Updates:
- InfoPanel shows satellite details
- HazardList displays collision warnings
- ManeuverSuggestion calculates Delta-V
- Orbital path renders in 3D
- Camera focuses on satellite
Backend Processing:
1. Load 260 satellites + 1500 debris
2. Stochastic assignment (18% collision probability)
3. Generate 4-10 debris per threatened satellite
4. Calculate distances (0.1-50 km)
5. Assign severity:
- CRITICAL: < 5 km (red)
- MODERATE: 5-50 km (orange)
- SAT-COLLISION: satellite-on-satellite (purple)
Frontend Display:
1. Sort by severity (SAT > CRITICAL > MODERATE)
2. Show countdown timers
3. Display SVG icons for each type
4. Update collision strip with top threats
User Adjusts TimeSlider
β
currentTime State Updates
β
Position Recalculation (throttled 2s):
- propagateKeplerian() for each object
- GMST calculation for Earth rotation
- Hazard distance updates
β
3D Scene Re-render:
- Update satellite positions
- Update orbital paths
- Update debris positions
- 18% probability each satellite has collision threats
- 4-10 debris per threatened satellite
- Dual severity: CRITICAL (0.1-5 km) vs MODERATE (5-50 km)
- Variable clusters: "Shotgun effect" for realistic scenarios
- 15 collision pairs out of 260 satellites
- Matching orbits (radius, inclination) within 0.05 radians
- Purple/red gradient styling to distinguish from debris
- Highest priority in warning lists
Emergency Evasive (< 5km):
βββ Delta-V: 15-20 m/s
βββ Burn Duration: 37-50 seconds
βββ Alert Level: CRITICAL
Preventive Adjustment (> 5km):
βββ Delta-V: 2-5 m/s
βββ Burn Duration: 5-12 seconds
βββ Alert Level: ADVISORY- Speed: 0.0005x - 10x real-time
- Precision: Sub-second accuracy
- Range: Β±24 hours from current time
- Throttled Updates: Position recalculation every 2 seconds
- Fuzzy search by satellite name
- Sort by: Name, Hazard count, Altitude
- Type detection: GPS, Communication, Weather, Scientific, etc.
- Debris toggle: Show/hide debris objects
- Monitor satellite fleet health
- Track collision threats in real-time
- Plan avoidance maneuvers
- Coordinate with other operators
- Track debris evolution
- Assess collision risks
- Plan deorbiting missions
- Generate safety reports
- Study orbital dynamics
- Analyze collision statistics
- Test avoidance strategies
- Simulate scenarios
- Teach orbital mechanics
- Demonstrate Keplerian motion
- Visualize space debris problem
- Engage students with interactive 3D
- Modify Frontend:
cd frontend/src/components
# Edit React components
# Changes hot-reload automatically in browser- Modify Backend:
cd backend
# Edit server.js or physics modules
# Restart server: Ctrl+C, then node server.js- Update Orbital Data:
cd backend/scripts
node generate_keplerian.js
# Generates new orbitalData.json with collision scenarios- Test Changes:
# Frontend: Changes reflect immediately with Vite HMR
# Backend: Check terminal for API logs
# Browser: Open DevTools Console for errors# Check status
git status
# Stage changes
git add .
# Commit with descriptive message
git commit -m "feat: Add new collision detection algorithm"
# Push to GitHub
git push origin main
# Pull latest changes
git pull origin mainAdd New Satellite Type:
- Edit
backend/scripts/generate_keplerian.js - Add satellite name to appropriate array
- Run
node generate_keplerian.js - Restart backend server
Customize UI Colors:
- Edit
frontend/src/styles/theme.css - Update CSS variables (--primary-color, etc.)
- Changes apply immediately via Vite HMR
Add New UI Component:
- Create file in
frontend/src/components/UI/ - Import in
App.jsx - Add to layout structure
- Style with glassmorphism classes
Backend not starting:
# Check if port 3001 is in use
Get-NetTCPConnection -LocalPort 3001
# Kill existing process
$port = Get-NetTCPConnection -LocalPort 3001 -ErrorAction SilentlyContinue | Select-Object -ExpandProperty OwningProcess
if ($port) { Stop-Process -Id $port -Force }
# Restart backend
cd backend
node server.jsFrontend build errors:
# Clear node_modules and reinstall
cd frontend
Remove-Item -Recurse -Force node_modules
npm install --legacy-peer-deps3D scene not rendering:
- Check browser console for WebGL errors
- Ensure GPU acceleration is enabled
- Try different browser (Chrome recommended)
Time slider not visible:
- Check if positioned correctly (right: 50px)
- Verify TimeSlider.jsx is imported in App.jsx
- Check browser width (responsive layout)
Satellites not moving:
- Ensure backend is running (check console logs)
- Verify data fetched successfully (Network tab)
- Check currentTime state is updating
Key Components:
- 3D Rendering: React Three Fiber with Three.js R128
- Physics Engine: Keplerian orbital propagation
- UI Framework: React 18 with Framer Motion animations
- Data Generation: Stochastic collision scenario generator
- API Layer: Express REST endpoints with CORS
- State Management: React hooks (useState, useEffect, useMemo)
- Initial Load: < 2 seconds for full application
- 3D Rendering: Stable 60 FPS with 1,760 objects
- Search Speed: < 50ms for fuzzy search across 260 satellites
- Collision Detection: < 100ms per satellite query
- Position Updates: Throttled to every 2 seconds (prevents frame drops)
- Memory Usage: Efficient with useMemo for expensive calculations
Frontend Stack:
- React 18.3.1 (UI framework)
- Vite 5.4.21 (Build tool)
- Three.js R128 (3D graphics)
- @react-three/fiber (React renderer for Three.js)
- @react-three/drei (3D helpers)
- Framer Motion 11.11 (Animations)
- GSAP (Timeline animations)
- Axios (HTTP client)
Backend Stack:
- Node.js 18+ (Runtime)
- Express 4.x (Web framework)
- CORS (Cross-origin support)
Development Tools:
- Git (Version control)
- npm (Package management)
- PowerShell (Windows terminal)
-
Dual Application Modes:
- Main Tracker: Full-featured React application
- Training Simulator: Lightweight standalone HTML
-
Smart Collision Prediction:
- Stochastic modeling with realistic probabilities
- Three severity levels (SAT-COLLISION, CRITICAL, MODERATE)
- Time-to-collision countdowns
- Automatic Delta-V maneuver calculations
-
Time Manipulation:
- Play/pause simulation
- Speed adjustment (0.0005x to 10x)
- Scrub through Β±24 hours
- Real-time position propagation
-
Professional UI:
- Cascadia Code monospace font
- SVG-based icon system
- Glassmorphism panels
- Aerospace color palette
- Responsive layout
Quick Deploy:
# Build frontend
cd frontend
npm run build
# Deploy to Vercel
vercel --prod
# Or deploy backend to Railway
railway upSupported Platforms:
- Frontend: Vercel, Netlify, GitHub Pages
- Backend: Railway, Render, Fly.io, Heroku
- Full Stack: Vercel (with serverless functions)
# Run tests (when implemented)
npm test
# E2E tests
npm run test:e2e
# Coverage
npm run test:coverageorbital-guard/
βββ backend/
β βββ package.json # Backend dependencies
β βββ server.js # Express API server (port 3001)
β βββ src/
β β βββ data/
β β β βββ staticData.js # Data loader module
β β βββ physics/
β β βββ collision.js # Collision detection algorithms
β β βββ propagator.js # Orbital propagation
β β βββ tle_fetcher.js # TLE data fetcher (optional)
β βββ scripts/
β β βββ generate_keplerian.js # Orbital data generator
β β βββ generate_static_data.js # Static data builder
β βββ data/
β βββ orbitalData.json # 260 satellites + 1500 debris
β βββ tle.json # Two-Line Element sets
β
βββ frontend/
β βββ package.json # Frontend dependencies
β βββ vite.config.js # Vite build configuration
β βββ index.html # Entry point
β βββ public/
β β βββ index5.html # Training simulator (served as static)
β βββ src/
β β βββ main.jsx # React app entry
β β βββ App.jsx # Main application component
β β βββ components/
β β β βββ Canvas/ # 3D scene components
β β β β βββ Atmosphere.jsx # Atmospheric glow
β β β β βββ Globe.jsx # Earth globe with texture
β β β β βββ OrbitPath.jsx # Satellite trajectories
β β β β βββ SatelliteSwarm.jsx # Billboard sprites
β β β βββ UI/ # User interface panels
β β β βββ Landing.jsx # Landing page with globe
β β β βββ LandingGlobe3D.jsx # 3D globe for landing
β β β βββ TimeSlider.jsx # Time control (bottom-right)
β β β βββ CollisionStrip.jsx # Bottom alert bar
β β β βββ HazardList.jsx # Collision warnings list
β β β βββ ManeuverSuggestion.jsx # Delta-V calculations
β β β βββ InfoPanel.jsx # Satellite details
β β β βββ SearchBar.jsx # Satellite search
β β β βββ FilterDropdown.jsx # Filtering options
β β β βββ SortDropdown.jsx # Sort by options
β β β βββ ComparisonPanel.jsx # Stats comparison
β β β βββ GroundStationPanel.jsx # Pass predictions
β β β βββ LeftPanel.jsx # Left sidebar container
β β β βββ RightPanel.jsx # Right sidebar container
β β βββ hooks/
β β β βββ useSatelliteData.js # Custom hook for data fetching
β β βββ physics/
β β β βββ keplerian.js # Client-side orbital propagation
β β βββ data/
β β β βββ globe.json # Globe geometry data
β β β βββ groundStations.js # Ground station coordinates
β β βββ styles/
β β β βββ theme.css # Global CSS variables
β β βββ utils/
β β βββ orbitalUtils.js # Utility functions
β βββ dist/ # Production build output
β
βββ shared/
β βββ constants.js # Shared constants (ports, etc.)
β
βββ index5.html # Training simulator (root)
βββ ARCHITECTURE.md # System architecture documentation
βββ README.md # This file
We welcome contributions! Please follow these steps:
- Fork the repository
- Create a feature branch (
git checkout -b feature/AmazingFeature) - Commit changes (
git commit -m 'Add AmazingFeature') - Push to branch (
git push origin feature/AmazingFeature) - Open a Pull Request
This project is licensed under the MIT License - see LICENSE file for details.
