Worldview is a real-time 3D geospatial intelligence and situational-awareness platform for visualizing global human activity, natural phenomena, orbital assets, and live maritime operations. Built with React 19, Vite 7, CesiumJS, and Google Gemini Pro, it presents a cinematic operational command interface inspired by modern defense intelligence dashboards.
Worldview was created as a high-performance open-source demonstration of real-time geospatial intelligence visualization and defensive AI integration. Inspired by enterprise defense dashboards and operational command centers (such as Palantir Foundry / Gotham UI), Worldview blends raw multi-source telemetry with modern WebGL shader aesthetics and artificial intelligence.
- Tactical Operational HUD: Features a circular viewport, scanline CRT effects, thermal FLIR/night-vision shaders, and telemetry HUD overlays.
- High-Throughput WebGL Engine: Engineered using raw CesiumJS
PointPrimitiveCollectionprimitives to render hundreds of live flights, satellites, ships, and earthquakes without framerate degradation. - Multi-Domain Data Integration: Fuses commercial air traffic (OpenSky), space domain awareness (CelesTrak TLE propagation via satellite.js), global maritime tracking (AISStream), and seismic activity (USGS).
- AI Crisis Intelligence: Powered by Google Gemini Pro acting as a tactical crisis analyst to provide concise threat priority assessments.
- Production API Security: Decoupled Express backend proxy architecture protecting API keys, enforcing rate limits, concurrency controls, and LRU data caching.
Worldview aggregates multiple real-time and near-real-time global datasets into a unified 3D globe visualization. Designed for performance and visual clarity, the application uses high-throughput WebGL primitive rendering to display hundreds of active flights, satellites, earthquakes, and vessels without framerate degradation.
An integrated AI Crisis Intelligence agent powered by Google Gemini continuously analyzes live global data snapshots to deliver concise situational assessments and threat priority ratings.
- 3D Globe Visualization: Interactive CesiumJS globe with smooth camera transitions, custom GLSL shader post-processing stages (CRT, Night Vision, Thermal FLIR), and HUD overlays.
- Google Photorealistic 3D Tiles: High-resolution 3D building and terrain mesh rendering for urban detail.
- Live Commercial Flights: Real-time position tracking of airborne commercial aircraft powered by OpenSky Network state vectors.
- Orbital Satellites: Live propagation of active satellite orbits using CelesTrak TLE data processed via satellite.js in background Web Workers.
- Seismic Activity: Live earthquake feeds provided by the USGS GeoJSON summary, highlighted with magnitude-scaled pulse indicators.
- Maritime Vessel Tracking: Real-time AIS stream position reports and static data for cargo, tankers, and military ops vessels via AISStream WebSocket integration.
- Weather & NEXRAD: Precipitation and weather overlays.
- AI Crisis Intelligence Agent: Gemini Pro integration providing under-40-word tactical situation reports with automatic priority classification (HIGH / MED / LOW).
Worldview uses a decoupled client-server architecture to isolate sensitive API credentials and protect backend endpoints against abuse and quota exhaustion:
[ Frontend: React 19 / Vite / CesiumJS ]
│
├──────► Google Photorealistic 3D Tiles (Direct Client WebGL with Domain Restrictions)
│
▼
[ Express API Proxy Server (Port 3001) ]
│
├── Rate Limiter (Per-IP limits: 10 req/15min AI, 60 req/min general)
├── Global Concurrency Lock (Max 2 active Gemini calls)
├── Global Usage Ceiling (Daily request limit counter)
├── Normalized Parameter Validation & Bounded LRU/TTL Cache
│
├──► Google Gemini Pro API (Server-Side Secrets: GEMINI_API_KEY_1 / 2)
├──► AISStream WebSocket (Server-Side Secret: AISSTREAM_API_KEY)
├──► OpenSky Network API (Cached 10s to prevent IP bans)
├──► CelesTrak TLE Feed (Cached 1h)
└──► USGS Earthquakes Feed (Cached 5m)
| Component | Technology | Description |
|---|---|---|
| Frontend Framework | React 19, Vite 7 | Fast, modern client SPA runtime |
| 3D Graphics Engine | CesiumJS (Raw API) | High-performance WebGL globe & primitive collections |
| Styling & CSS | Tailwind CSS v4, Vanilla CSS | Custom HUD styling, scanlines, vignettes |
| Backend Server | Node.js, Express, ws |
API proxy, rate limiting, AISStream consumer, cache |
| Orbital Propagation | satellite.js |
SGP4 orbital propagation in Web Workers |
| AI Intelligence | Google Gemini 2.5 Flash | Real-time crisis assessment & priority tagging |
Worldview integrates data from public intelligence feeds and external API providers:
| Data Feed | Provider / Source | Update Mechanism | Access Tier / Requirements |
|---|---|---|---|
| Commercial Flights | OpenSky Network | Polled state vectors (10s cache) | Public Data / Open API |
| Satellites | CelesTrak | TLE orbital element GP feed (1h cache) | Public Data / Open Access |
| Earthquakes | USGS Earthquake Hazards Program | GeoJSON summary feed (5m cache) | Public Domain / Open Access |
| Maritime Vessels | AISStream | WebSocket AIS position stream | API Key Required (Server-Side) |
| Crisis Analysis | Google Gemini Pro | REST API generation (30s cache) | API Key Required (Server-Side) |
| 3D Photorealistic Tiles | Google Maps Platform | Direct WebGL 3D Tiles API | API Key Required (Client-Side) |
| Weather | Open-Meteo / NOAA | Forecast REST API & NEXRAD WMS | Public Data / CC-BY 4.0 |
- Node.js: v18.0.0 or higher
- npm: v9.0.0 or higher
-
Clone the repository:
git clone https://github.com/your-username/worldview.git cd worldview -
Install dependencies:
cd worldview npm install
Copy .env.example to .env inside the worldview/ directory:
cp .env.example .envPopulate .env with your API credentials:
# Client-Visible (Restricted by HTTP Referrer in Google Cloud Console)
VITE_GOOGLE_MAPS_KEY=your_google_maps_3d_tiles_key
# Server-Only Secrets (Never exposed to browser)
GEMINI_API_KEY_1=your_primary_gemini_api_key
GEMINI_API_KEY_2=your_optional_fallback_gemini_api_key
AISSTREAM_API_KEY=your_aisstream_api_key
PORT=3001
GEMINI_DAILY_LIMIT=500To start both the Express backend API proxy server and the Vite frontend dev server:
-
In terminal 1, start the backend API server:
npm run server
-
In terminal 2, start the Vite development server:
npm run dev
Open your browser at http://localhost:5173. The Vite dev server automatically proxies /api/* requests to the Express server running on http://localhost:3001.
To build and run the production application:
npm run build
npm run startThe production server will build static assets to dist/ and serve both the SPA frontend and /api/* proxy endpoints from http://localhost:3001.
worldview/
├── server/
│ ├── index.js # Express API proxy server, AISStream WS worker & rate limiters
│ └── store.js # Decoupled bounded LRU cache with TTL support
├── src/
│ ├── components/ # React UI HUD & 3D Globe components
│ │ ├── GlobeViewer.jsx # CesiumJS core rendering engine & visual shaders
│ │ ├── DataLayersPanel.jsx # Layer toggle controls
│ │ ├── GeminiPanel.jsx # Crisis intelligence UI panel
│ │ └── VisualControlsPanel.jsx # Presets and HUD readouts
│ ├── hooks/ # Custom data hooks fetching via /api proxy
│ │ ├── useFlights.js # Flights hook via /api/flights
│ │ ├── useSatellites.js # Satellites hook via /api/satellites
│ │ ├── useShips.js # Vessels hook via /api/ships
│ │ ├── useEarthquakes.js # Earthquakes hook via /api/earthquakes
│ │ └── useGemini.js # Gemini intelligence hook via /api/gemini
│ ├── workers/ # Web Workers for satellite orbit propagation
│ └── worldview.css # Viewport styles, scanlines, vignettes
├── public/ # Static assets & fallback datasets
├── .env.example # Template for environment variables
└── vite.config.js # Vite configuration with /api proxy
- Secret Isolation:
GEMINI_API_KEY_1,GEMINI_API_KEY_2, andAISSTREAM_API_KEYare read strictly server-side byserver/index.jsand never bundled into client JavaScript. - Client Key Domain Restrictions:
VITE_GOOGLE_MAPS_KEYis restricted by domain in Google Cloud Console. - Rate Limits: Per-IP rate limiting enforces 10 requests / 15 minutes on AI endpoints and 60 requests / minute on data endpoints.
- Global Usage Caps: Daily hard request limit counter caps Gemini AI calls across all clients.
- Upstream Timeouts: All upstream API calls enforce an 8-second
AbortSignaltimeout to prevent hanging worker sockets. - Bounded In-Memory Caching: Responses are cached in a bounded LRU/TTL store to prevent unbounded memory growth and reduce upstream API overhead.
- OpenSky Network Rate Limits: OpenSky anonymous state vectors are capped by OpenSky to 10-second update intervals.
- AISStream Coverage: AIS vessel tracking coverage depends on terrestrial receiver density and satellite AIS availability in specific sea zones.
- In-Memory Store Scope: The default backend cache and rate limiters operate in-memory for single-instance deployments. For horizontal multi-instance scaling, swap
store.jswith a Redis adapter.
Contributions are welcome! Please read CONTRIBUTING.md and SECURITY.md before submitting pull requests.
This project is licensed under the MIT License.
