Real-time open-source intelligence (OSINT) platform. Interactive 2D/3D globe tracking military bases, conflict zones, nuclear facilities, critical infrastructure, naval assets, and breaking news — all in one command center.
- Interactive 2D Map (Leaflet) with 10,000+ plotted data points
- 3D Globe (Cesium) with satellite imagery, terrain, and fly-to navigation
- Military Infrastructure — airbases, naval ports, missile sites, bunkers, radar stations
- Conflict Zone Tracking — front lines, contested territory, real-time updates
- Nuclear Facilities — power plants, enrichment sites, research reactors
- Critical Infrastructure — pipelines, undersea cables, data centers, power grids
- Live News Feed — geotagged breaking news overlaid on the map
- Street-Level Imagery — Mapillary integration with multi-key rotation
- Historical Satellite Imagery — ESRI Wayback time-slider
- Drawing & Measurement Tools — measure distances, draw zones, drop pins
- Bookmarks & Alert Zones — save locations, get notified on changes
- Google Sign-In — save your pins and settings across sessions
- PWA Support — installable, offline-capable, service worker caching
- Dark Theme — built for low-light analysis environments
| Layer | Technology |
|---|---|
| Framework | Next.js 16 (App Router) + TypeScript 5 |
| UI | React 19, Tailwind CSS 4, shadcn/ui |
| Auth | Google Identity Services + jose (JWT sessions) |
| Cache / User Store | Upstash Redis (KV) via REST API |
| 2D Map | Leaflet 1.9 + MarkerCluster |
| 3D Globe | Cesium 1.140 (lazy-loaded from CDN) |
| Street View | Mapillary |
| Historical Imagery | ESRI Wayback |
| Hosting | Vercel |
- Node.js 18+
- npm
- A Vercel account (for deployment)
- API tokens (see Environment Variables below)
git clone https://github.com/anythingeverything556-web/WorldIntelligence.git
cd WorldIntelligencenpm install --legacy-peer-depscp .env.example .env.localFill in your API tokens and secrets in .env.local. See the full guide below.
npm run devOpen http://localhost:3000.
One-click deploy to your preferred platform. Set your environment variables in the platform dashboard after deploy.
| Platform | Deploy | Notes |
|---|---|---|
| Vercel | Recommended. Native Next.js support. Free tier generous. | |
| Railway | Good alternative. Free $5 credit/month. | |
| Render | Free tier with auto-sleep. Reads render.yaml automatically. |
|
| Self-hosted | Caddy | caddy run — reverse proxies to localhost:3000. |
- Push this repo to your GitHub account
- Go to vercel.com/new and import the repo
- Add all environment variables in the Vercel dashboard (Project Settings > Environment Variables)
- Deploy
Copy .env.example to .env.local and fill in each value.
Powers Google Sign-In authentication.
- Go to Google Cloud Console > Credentials
- Click Create Credentials > OAuth 2.0 Client ID
- Select Web application
- Add your domain to Authorized JavaScript origins (e.g.
http://localhost:3000for dev,https://yourdomain.comfor prod) - Copy the Client ID — looks like
xxxxx.apps.googleusercontent.com
Free tier: yes.
Signs session JWTs (httpOnly cookies).
openssl rand -base64 48Paste the output. Must be 64+ characters.
Powers the 3D globe (terrain, imagery, 3D tiles).
- Go to ion.cesium.com/tokens
- Sign up (free)
- Copy the default token or create a new one
Free tier: yes (5 GB/month).
Powers street-level imagery. Comma-separated list for key rotation.
- Go to mapillary.com/developer
- Create an app, copy the Client Token
- For multiple keys:
token1,token2,token3
Free tier: yes.
Powers base map tiles.
- Go to cloud.maptiler.com/account/keys
- Sign up (free), copy the default key
Free tier: yes (100k loads/month).
Powers user data storage and OSM military data cache.
- Go to console.upstash.com
- Create a Redis database
- Copy the REST URL and REST Token
Free tier: yes (10k commands/day).
Protects the OSM cache write endpoint. Must be 32+ characters.
openssl rand -base64 32Comma-separated list of allowed origins for API routes.
CORS_ORIGINS=http://localhost:3000,https://yourdomain.com
Browser --> / (Next.js route.ts) --> serves public/efweg.html --> SPA loads
|
+-- public/assets/js/app.min.js (main bootstrap)
+-- public/assets/js/data.min.js (OSINT datasets)
+-- public/assets/js/features.min.js (20 feature modules)
+-- public/assets/js/google-auth.min.js (Google Sign-In)
+-- public/assets/js/osm.min.js (OSM data loader)
+-- public/assets/js/cesium/ (3D globe, lazy-loaded)
The project uses a thin-wrapper pattern — Next.js handles API routes, auth, and env var proxying. The actual application is a vanilla JavaScript SPA in public/.
| Path | Purpose |
|---|---|
public/ |
Static SPA — the real application |
public/assets/js/ |
Client-side JavaScript (14k+ lines) |
public/assets/css/ |
Dark theme styles |
public/assets/data/borders/ |
20 GeoJSON region files (country borders) |
src/app/api/ |
Next.js API routes (auth, OSM cache, health, config) |
src/lib/ |
Shared utilities (session, user-store, cn) |
src/components/ui/ |
48 shadcn/ui components |
api/ |
Standalone Vercel serverless functions |
railway.toml |
Railway one-click deploy config |
render.yaml |
Render one-click deploy config |
npm run dev # Start dev server on port 3000
npm run build # Build for production
npm run start # Start production server
npm run lint # Run ESLint| Endpoint | Method | Auth | Purpose |
|---|---|---|---|
/api/auth/google |
POST | Rate-limited | Google Sign-In token verification |
/api/auth/session |
GET | Cookie | Check current session |
/api/auth/signout |
POST | Cookie | Clear session |
/api/config |
GET | Same-origin | Serve map tokens to client |
/api/health |
GET | Public | Health check |
/api/osm-cache |
GET | CORS | Read OSM military data from KV |
/api/osm-cache |
POST | Admin secret | Write OSM military data to KV |
/api/user/data |
GET/POST | Cookie | User data CRUD |
/api/user/me |
GET | Cookie | Current user profile |
- Google ID token verification (server-side only,
google-auth-library) - Session JWTs signed with
jose(HS256, 7-day expiry) - httpOnly, Secure, SameSite=Lax session cookies
- Strict same-origin CORS validation on all API routes
- Content Security Policy headers (configured in
vercel.json) - X-Content-Type-Options, X-Frame-Options, Referrer-Policy, HSTS
- Admin secret with timing-safe comparison on write endpoints
- Rate limiting on auth endpoint (5 attempts/min per IP)
- Input validation and
email_verifiedclaim check - No secrets in client-side code — all tokens proxied through API routes
All user-created data (pins, bookmarks, drawn shapes, alert zones, settings) is stored client-side in browser localStorage. User identity records (Google ID, email, name, picture) are stored server-side in Upstash KV (keyed by user:<sub>). No relational database.
WorldIntelligence/
|-- api/ # Vercel serverless functions
| |-- config.mjs # Token proxy (Cesium, MapTiler, Mapillary)
| |-- osm-cache.mjs # OSM military data cache (KV read/write)
| |-- ping.mjs # Health check
|-- public/ # Static SPA
| |-- efweg.html # Main application page
| |-- console.html # Intel console view
| |-- intel-feed.html # News feed view
| |-- assets/
| | |-- js/ # Client-side JavaScript
| | |-- css/ # Stylesheets
| | |-- data/borders/ # GeoJSON country borders
| | |-- img/ # Logos and images
| |-- manifest.json # PWA manifest
| |-- sw.js # Service worker
|-- src/
| |-- app/
| | |-- api/ # Next.js API routes
| | |-- layout.tsx # Root layout
| | |-- route.ts # Root page handler
| |-- components/ui/ # shadcn/ui components
| |-- hooks/ # React hooks
| |-- lib/ # Utilities (session, user store)
|-- .env.example # Environment variable template
|-- .gitignore
|-- LICENSE # MIT
|-- next.config.ts
|-- package.json
|-- railway.toml # Railway deploy config
|-- render.yaml # Render deploy config
|-- tailwind.config.ts
|-- tsconfig.json
|-- vercel.json # Vercel deployment config + CSP headers
The full military installation dataset (airbases, naval ports, missile sites, radar stations, bunkers) is not included in this repository due to size.
If you want the data for self-hosting:
DM me on X (Twitter): @WorldIntelOSINT
I will send you the data files and instructions on how to load them into your instance.
- Fork the repo
- Create a feature branch (
git checkout -b feature/my-feature) - Commit your changes
- Push and open a Pull Request
MIT — 2026 WorldIntelligence