An open-source real-time geospatial intelligence dashboard built with CesiumJS. Track satellites, flights, military aircraft, earthquakes, surveillance passes, GPS jamming, maritime vessels, airspace closures, and internet outages — all on a 3D globe with military-style HUD overlays.
All data layers use free, publicly available, open data sources. No paid APIs required.
- 11 Data Layers — Satellites, Flights, Military, Earthquakes, Country Labels, CCTV, Traffic, Surveillance Passes, GPS Jamming, Maritime AIS, Airspace Closures, Internet Outages
- Visual Modes — Normal, CRT scanline, Night Vision (NVG), FLIR thermal
- Playback System — Scrub through historical positions with adjustable speed
- Military HUD — Tactical overlay with camera telemetry, MGRS coords, GSD estimation
- Keyboard Shortcuts — Quick access to visual modes, landmarks, and UI controls
- 100% Open Data — Every data layer is powered by free, open, no-auth APIs or open datasets
- Node.js >= 18
- npm >= 9
git clone https://github.com/alkeincodes/gods-eye.git
cd gods-eyenpm installCopy the example env file:
cp .env.example .envEdit .env with your values:
VITE_CESIUM_ION_TOKEN=your_cesium_ion_token
VITE_OPENSKY_CLIENT_ID=your_opensky_client_id
VITE_OPENSKY_CLIENT_SECRET=your_opensky_client_secretAll API keys are optional. The app runs fully without any keys — it falls back to OpenStreetMap tiles and anonymous API access. Keys only improve imagery quality and rate limits.
npm run devOpen http://localhost:5173 in your browser.
npm run build
npm run previewEvery data layer in God's Eye is powered by free, open, publicly available data. No paid subscriptions or private APIs are used.
| Layer | Source | URL | Auth | Refresh | License / Terms |
|---|---|---|---|---|---|
| Satellites | CelesTrak | celestrak.org/NORAD/elements/gp.php |
None | 60 min | Free public access |
| Flights | OpenSky Network | opensky-network.org/api/states/all |
Free account (optional) | 10s | OpenSky License — free for non-commercial use |
| Military | ADSB.lol | api.adsb.lol/v2/mil |
None | 10s | Free public API |
| Earthquakes | USGS | earthquake.usgs.gov/earthquakes/feed/ |
None | 5 min | Public domain (US Government) |
| CCTV | TxDOT | its.txdot.gov (static list) |
None | 1 min | Public government data |
| Traffic | Overpass API (OSM) | overpass-api.de/api/interpreter |
None | 5 min | ODbL |
| Surveillance | CelesTrak | Same TLE data, filtered by NORAD ID | None | 1s (propagation) | Free public access |
| GPS Jamming | GPSJam | gpsjam.org/data/YYYY-MM-DD-h3_4.csv |
None | 24h | Free public data |
| Maritime AIS | Simulated | Mock data (Strait of Hormuz) | N/A | 15s | N/A — generated locally |
| Airspace | Static | Hardcoded conflict/restricted zones | N/A | Never | Public knowledge |
| Internet Outages | IODA | api.ioda.inetintel.cc.gatech.edu/v2/ |
None | 5 min | Free academic research data (Georgia Tech) |
These keys are not required but improve the experience:
Provides high-resolution terrain and satellite imagery. Without it, the app uses OpenStreetMap tiles which work perfectly fine.
- Create a free account at cesium.com/ion
- Go to Access Tokens and copy your default token
- Set
VITE_CESIUM_ION_TOKENin your.env
Provides real-time commercial flight data. Without credentials, anonymous access works but is limited to ~100 requests/day.
- Register for free at opensky-network.org
- Navigate to Dashboard → OAuth and create client credentials
- Set
VITE_OPENSKY_CLIENT_IDandVITE_OPENSKY_CLIENT_SECRETin your.env
| Command | Description |
|---|---|
npm run dev |
Start development server on port 5173 |
npm run build |
Type-check and build for production |
npm run preview |
Preview the production build |
npm run lint |
Run ESLint |
npm run test |
Run tests with Vitest |
| Key | Action |
|---|---|
1 - 4 |
Switch visual mode (Normal / CRT / NVG / FLIR) |
Q W E R T |
Jump to landmarks in current city |
[ / ] |
Cycle between cities |
H |
Toggle clean UI (hide HUD overlays) |
Space |
Play / Pause (playback mode) |
Esc |
Deselect / close panels |
- Framework — React 19, Vite 7, TypeScript 5.9
- 3D Globe — CesiumJS + Resium
- Styling — Tailwind CSS v4
- State — Zustand v5
- Satellite Propagation — satellite.js (SGP4/SDP4)
- Icons — Lucide React
Contributions are welcome! Feel free to open issues and submit pull requests.
- Fork the repository
- Create your feature branch (
git checkout -b feature/my-feature) - Commit your changes (
git commit -m 'Add my feature') - Push to the branch (
git push origin feature/my-feature) - Open a Pull Request
This project is licensed under the MIT License — you are free to use, modify, and distribute it for any purpose.