Real-time satellite tracking app that displays multiple satellites on an interactive Mapbox map using the N2YO API.
- Track multiple satellites simultaneously (ISS, Hubble, NOAA, Starlink, etc.)
- Live position updates every 5 seconds
- Interactive Mapbox map with custom markers per satellite type
- Telemetry display: latitude, longitude, altitude, sunlit/eclipsed status
- NASA ISS external HD camera stream (when ISS is selected)
- Built with Angular 18, NgRx, Tailwind CSS
| Satellite | NORAD ID | Category |
|---|---|---|
| ISS (ZARYA) | 25544 | Space Station |
| CSS (Tianhe) | 48274 | Space Station |
| Hubble Space Telescope | 20580 | Science |
| NOAA 19 | 33591 | Weather |
| NOAA 18 | 28654 | Weather |
| Starlink-24 | 43013 | Starlink |
| Terra | 25994 | Science |
| Aqua | 27424 | Science |
- Node.js 18+
- npm
-
Install dependencies:
npm install
-
Create a
.envfile in the project root:MAPBOX_ACCESS_TOKEN=<your_mapbox_token> N2YO_API_KEY=<your_n2yo_api_key> YOUTUBE_ID=<youtube_video_id_optional>
Get your N2YO API key at n2yo.com/api.
-
Start the dev server:
npm start
Visit
http://localhost:4200/.
npm start– run dev server with hot reloadnpm run build– build for developmentnpm run build:prod– production buildnpm run serve:prod– serve compiled app fromdist/project-iisnpm test– run unit tests
src/app/
├── components/
│ └── location-tracker/ # Main tracker UI
├── model/
│ ├── iss-location.model.ts
│ └── satellite.model.ts # N2YO response types
├── services/
│ ├── satellite.service.ts # N2YO API client
│ └── map.service.ts # Mapbox + multi-marker support
└── state/
├── actions/
├── effects/
├── reducer/
└── selectors/
- N2YO API: Free tier allows 1,000 requests/hour. Positions endpoint is polled every 5 seconds.
- Mapbox: Custom dark style. Change in
map.service.tsif needed.
Edit src/app/model/satellite.model.ts and add entries to TRACKED_SATELLITES:
{ id: 12345, name: 'My Satellite', category: SatelliteCategory.OTHER, icon: 'satellite' }MIT