A real-time 3D space dashboard built with Three.js and a Go backend. Shows live ISS position, actual solar wind data from NOAA satellites, and near-Earth asteroids from NASA — all rendering in your browser, no install needed.
The ISS dot on Earth is the actual position right now. It updates every 5 seconds. The particle stream between the Sun and Earth is driven by real NOAA solar wind readings — when the wind is slow it's blue, when it's fast it goes orange/red. The colored dots around Earth are today's near-Earth asteroids from NASA: red means potentially hazardous, green means safe pass.
Everything in the HUD is live:
- ISS altitude, velocity, coordinates, daylight/eclipse status — wheretheiss.at API
- Solar wind speed, plasma density, IMF Bz — NOAA SWPC
- Near-Earth object count — NASA NEO API
Frontend
- React + Vite
- Three.js + React Three Fiber
- Custom GLSL shaders for Sun corona and Earth atmosphere
- Custom particle system for solar wind stream
- Space Mono font
Backend
- Go — polls NOAA every 60 seconds, caches data, serves with CORS headers
- Deployed on Render
APIs (all free, no key needed except NASA)
- wheretheiss.at — ISS position
- NOAA SWPC — solar wind mag + plasma data
- NASA NEO — near-Earth asteroids
You need Go and Node installed.
Start the backend:
cd backend
go run main.goStart the frontend:
npm install
npm run devOpen http://localhost:5173
The backend runs on :8080 and the frontend proxies solar wind requests through it to avoid CORS issues with NOAA.
NOAA publishes magnetometer and plasma readings every minute from the DSCOVR satellite at the L1 Lagrange point. The Go backend fetches mag-1-day.json and plasma-1-day.json, grabs the latest reading, and exposes it at /api/solar.
The frontend reads solar wind speed and maps it to particle color and animation speed:
| Speed | Color | Condition |
|---|---|---|
| < 400 km/s | Blue | Slow wind |
| 400–500 km/s | Yellow | Normal |
| 500–600 km/s | Orange | Fast wind |
| > 600 km/s | Red | Storm |
When IMF Bz drops below -10 nT the HUD shows a geomagnetic storm warning.
plasma-net/
├── src/
│ ├── components/
│ │ ├── Sun.jsx # Sun with sprite-based corona glow
│ │ ├── Earth.jsx # Earth with atmosphere layers
│ │ ├── ISS.jsx # Live ISS position, updates every 5s
│ │ ├── Particles.jsx # Solar wind particle stream
│ │ ├── Asteroids.jsx # NASA NEO dots around Earth
│ │ ├── StarField.jsx # 20k stars + Milky Way band
│ │ └── HUD.jsx # Overlay UI panels
│ └── hooks/
│ └── useSolarWind.js # NOAA data hook
└── backend/
└── main.go # Go server, NOAA polling, cache
- v0.1.0 — Live ISS tracking
- v0.2.0 — Solar wind visualization + NASA asteroids + Go backend
- v0.3.0 — Black hole mode with accretion disk reacting to live solar wind
- v0.3.0 — CME particle eruptions from Sun
- v0.3.0 — ISS orbit trail
I wanted to see if live space weather data could actually look good in a browser. Most space visualizations are either scientifically accurate and ugly, or beautiful and fake. This tries to be both — the ISS dot is where the ISS actually is, the solar wind speed number is from a satellite sitting 1.5 million km from Earth, and the asteroids are real objects NASA is tracking today.
Issues and PRs welcome. If you want to add a feature check the roadmap first — v0.3.0 is going to be a big visual update and I have a rough plan for it.
Live data refreshes: ISS every 5s · Solar wind every 60s · Asteroids daily
