God's Eye View
Audited from github.com/bilawalsidhu/gods-eye-view
God's Eye View is a browser-based, spy-satellite style 3D globe that plots live public data (aircraft, ships, satellites, earthquakes, weather, public cameras) on Cesium, with optional hands-free voice control through a realtime AI agent.
- Language
- JavaScript
- Running for
- 3 months
- Team
- Solo / 2-5 people
Why this architecture
All rendering runs client-side on Cesium with plain JavaScript modules, while a thin localhost Node proxy per data provider keeps keys out of the browser, so the whole product installs and runs locally with no hosted backend or database.
Tech stack by layer
8 technologies · audited Sep 25, 2026- JavaScriptPlain ES modules (no UI framework) for the globe, HUD, layers and panels under src/
- Cesium3D globe engine rendering terrain, imagery, photorealistic 3D tiles and every live entity layer
- ViteDev server and production bundler, extended by vite-plugin-cesium and a custom build/vite.js
- WebAssemblyeccodes-wasm decodes GRIB weather forecasts in the browser for the wind and weather layers
- Node.jsLocal provider proxies under server/providers keep API keys off the client and normalise feeds
- PuppeteerDrives the headless-browser QA scripts in scripts/qa-*.mjs that screenshot and probe features
- GitHub ActionsSingle ci.yml workflow running formatting, boundary checks and unit tests
- PinokioOne-click local installer/launcher scripts for Windows, macOS and Linux
- OpenAIRealtime voice agent that maps spoken commands to globe actions (src/voice, server/providers/openai)
God's Eye View architecture diagram
Open SVGDiagram as text
- Browser app (vanilla JS modules) → Cesium globe (3D tiles · layers): render
- Voice commands (realtime agent) → OpenAI (realtime voice): speech
- Voice commands (realtime agent) → Cesium globe (3D tiles · layers): globe actions
- Cesium globe (3D tiles · layers) → Provider proxies (Node.js · server/providers): layer data
- Cesium globe (3D tiles · layers) → GRIB decoder (eccodes-wasm): weather files
- Provider proxies (Node.js · server/providers) → Live data feeds (flights · satellites · traffic): keyed requests
Key architectural decisions
5 decisions- 01
A browser app with a thin local Node proxy instead of a hosted backend
The globe runs entirely in the browser (index.html, src/main.js), while server/providers/*.js expose per-source proxies (live flights, space, traffic, CCTV, radio, OpenAI) bound to localhost, so keys stay in a local .env and there is no server-side database.
- 02
Every data source is a separate layer module behind package exports
package.json "exports" maps each feed to its own module (./layers/flights, ./layers/vessels, ./layers/satellites, ./layers/cctv, …) and scripts/check-package-boundaries.mjs plus check-import-directions.mjs enforce the import rules between them.
- 03
Keyless by default, provider keys as in-app upgrades
Esri imagery, keyless terrain and public feeds work without accounts; Cesium ion, Google Photorealistic 3D Tiles and OpenAI keys are added from the in-app POWER UP panel (src/keySetup.js, server/standalone/key-setup) and written to an owner-only local .env.
- 04
Colocated node:test unit tests plus Puppeteer QA scripts
Logic lives in small policy modules (e.g. src/cockpitVisionPolicy.js) with a sibling *.test.mjs run by scripts/run-unit-tests.mjs, while dozens of scripts/qa-*.mjs Puppeteer scripts exercise rendering, traffic, transit and voice routing in a real browser.
- 05
No UI framework; hand-written DOM modules under src/ui
Panels, HUD, cockpit and director tooling are plain JavaScript modules (src/ui/*.js, src/hud.js) exported through package.json, keeping the dependency list to about ten runtime packages centred on cesium.
How God's Eye View is built
How God's Eye View is structured
God's Eye View is a single npm package (package.json, "type": "module") rather than a monorepo. The browser entry point is index.html plus src/main.js; everything the user sees is built from plain JavaScript modules under src/. The repository splits cleanly into four areas:
src/— the client: the Cesium viewer (src/app/viewer.js), per-feed layers (src/layers/*), map sources (src/maps/*), UI panels (src/ui/*), the HUD (src/hud.js), the scene director (src/director,src/scenes) and voice control (src/voice).server/— localhost-only Node.js code:server/providers/*proxies for live flights, space, terrain, traffic, CCTV, radio, Overpass and OpenAI, andserver/standalonefor key setup.scripts/— tooling: the setup doctor, formatters, boundary checks, Pinokio install/start helpers and a large set ofqa-*.mjsbrowser QA scripts.docs/— design notes such asdocs/CODE-BOUNDARIES.md,docs/INFRASTRUCTURE-LAYERS.mdanddocs/PERFORMANCE.md.
The exports field in package.json doubles as an architecture map: each layer, provider, map source and UI surface has its own subpath (./layers/flights, ./server/providers/space, ./maps/3d, ./voice/controller, …).
Frontend
The globe is rendered by Cesium (opens in a new tab), wired into Vite through vite-plugin-cesium and a project-specific build/vite.js. There is no React or Vue: panels, the cockpit view, the detection overlay and the split-flap readouts are hand-written DOM modules in src/ui/*.js and top-level files like src/cockpitMath.js and src/renderGovernor.js.
Visual "sensor" looks (CRT, NVG, FLIR, Noir) are post-processing effects over the normal globe (src/bloom.js, src/ui/effects.js). Satellites are propagated client-side with satellite.js, live camera streams play through hls.js, and GRIB weather data is decoded in the browser by @meri-imperiumi/eccodes-wasm. Software-defined radio support comes from @jtarrio/webrtlsdr, and vector tiles are parsed with @mapbox/vector-tile and pbf.
Backend & APIs
The backend is a set of small Node.js modules under server/providers/ (live.js, space.js, terrain.js, traffic.js, firms.js, gbfs.js, cctv.js, radio.js, overpass.js, openai.js, …). Each forwards requests to one upstream source, normalises the payload and keeps credentials on the machine. According to the README the server binds to localhost, and Provider Settings only answers requests from the same machine.
Voice control uses an OpenAI realtime session (src/voice/realtimeController.js, src/voice/realtimeBackend.js) that maps spoken intents to globe actions defined in src/voice/gevActions.js and src/voice/commands.js. src/voice/voiceCost.js tracks the cost of each session.
Data & persistence
The repository has no database. State comes from four places:
- live upstream feeds fetched through the provider proxies,
- bundled static data (
config/cctv_sources.*.json,public/models, Natural Earth and neighbourhood polygons undersrc/data), - share links that serialize camera, style, layers and a tracked target into the URL (
src/sharelink.js), - a local
.env(orpinokio/ENVIRONMENT) holding optional provider keys, made owner-only before any secret is written to it.
DATA_SOURCES.md and THIRD_PARTY_NOTICES.md document where each feed comes from and its terms.
Build, test & deploy
npm run dev/npm run buildrun Vite (vite.config.js).npm testrunsscripts/run-unit-tests.mjs, which executes the colocated*.test.mjsfiles next to their modules insrc/.npm run check:boundariesrunsscripts/check-import-directions.mjsandscripts/check-package-boundaries.mjsagainstscripts/package-boundaries.json.- The
scripts/qa-*.mjsfiles use Puppeteer to drive a real browser through features such as traffic, transit, weather and voice routing, and write screenshots throughscripts/shot-sink.mjs. - A single GitHub Actions workflow,
ci.yml, runs in.github/workflows.
No hosting configuration (Vercel, Fly, Docker) is visible in the repository. The project is meant to be run locally.
Self-hosting notes
Two install paths are documented: a one-click Pinokio (opens in a new tab) launcher (pinokio/*.js, scripts/pinokio-*.mjs) and a terminal path using npm ci, npm run doctor and npm run dev on Node.js 24 or 26 (engines in package.json). Keys are added in the app's POWER UP panel instead of by editing files. On macOS, scripts/dev-fresh.sh can read keys from the Keychain.
The GitHub license field reads NOASSERTION, while package.json declares MIT. Check LICENSE and DATA_SOURCES.md before reusing code or bundled data; the README says the bundled Nepal flood data is non-commercial.
What to copy (and what not to)
What to copy
- One proxy module per upstream provider behind a localhost server. The client never sees secrets, and each source can be swapped or removed independently.
- Using
package.jsonexportsplus a boundary checker script as enforced module architecture in a framework-free codebase. - Small, pure "policy" modules with a sibling
*.test.mjs, which keep logic testable apart from the WebGL renderer.
What not to copy
- A single package with over a hundred export subpaths gets hard to navigate. A workspace split (client, providers, tooling) would make ownership clearer once a team grows.
- The large set of ad hoc
qa-*.mjsscripts works for a solo maintainer, but a shared test runner and fixture layer would cut duplication.
Sources & repo audit
- Audited
- Sep 25, 2026
- Commit
- b210ab0
- License
- NOASSERTION
- package.json (dependencies, scripts and module export map)
- vite.config.js
- docs/CODE-BOUNDARIES.md
- README (quick start, keys and data sources)
Independent analysis of repository at github.com/bilawalsidhu/gods-eye-view. Spotted an inaccuracy? Use the claim form to request a correction.
Maintainer? Add the architecture badge to your README
[](https://stackitfast.com/project/gods-eye-view) Scaffold it with your agent
Paste this prompt into Claude Code, Cursor, Windsurf or AGY to start a project with God's Eye View's architecture.
- 1Copy the promptThe full markdown spec, with every layer and decision.
- 2Open your AI toolClaude Code, Cursor, Windsurf or Copilot, in a new repo.
- 3Paste and scaffoldUse it as the first instruction; review before you ship.
# MISSION: Scaffold "God's Eye View" Production Architecture
You are an expert Senior Staff Software Architect and Full-Stack Engineer. Your mission is to scaffold and implement a production-grade, highly reliable, and modular codebase following the proven architecture of **God's Eye View**.
---
## 1. PROJECT SPECIFICATIONS & BENCHMARK
- **Reference Architecture**: God's Eye View
- **What It Does**: God's Eye View is a browser-based, spy-satellite style 3D globe that plots live public data (aircraft, ships, satellites, earthquakes, weather, public cameras) on Cesium, with optional hands-free voice control through a realtime AI agent.
- **Domain & Category**: Browser-Based 3D Geospatial Intelligence Simulator
- **Production Scale**: Solo / 2-5 people
- **Development Mode**: HYBRID
- **Architectural Rationale**: All rendering runs client-side on Cesium with plain JavaScript modules, while a thin localhost Node proxy per data provider keeps keys out of the browser, so the whole product installs and runs locally with no hosted backend or database.
- **Live Website Reference**: https://maptheworld.ai/
- **Source Repository**: https://github.com/bilawalsidhu/gods-eye-view
---
## 2. PRODUCTION TECH STACK
- **Full Stack Array**: JavaScript, Cesium, Vite, Node.js, OpenAI, WebAssembly, Puppeteer, GitHub Actions
- **Primary Language(s)**: JavaScript, CSS, HTML, Shell
- **License of the reference repo**: NOASSERTION
- **Frontend**: JavaScript — Plain ES modules (no UI framework) for the globe, HUD, layers and panels under src/; Cesium — 3D globe engine rendering terrain, imagery, photorealistic 3D tiles and every live entity layer; Vite — Dev server and production bundler, extended by vite-plugin-cesium and a custom build/vite.js; WebAssembly — eccodes-wasm decodes GRIB weather forecasts in the browser for the wind and weather layers
- **Backend & APIs**: Node.js — Local provider proxies under server/providers keep API keys off the client and normalise feeds
- **Infrastructure & deploy**: Puppeteer — Drives the headless-browser QA scripts in scripts/qa-*.mjs that screenshot and probe features; GitHub Actions — Single ci.yml workflow running formatting, boundary checks and unit tests; Pinokio — One-click local installer/launcher scripts for Windows, macOS and Linux
- **Tooling, testing & ops**: OpenAI — Realtime voice agent that maps spoken commands to globe actions (src/voice, server/providers/openai)
---
## 3. KEY ARCHITECTURAL DECISIONS (audited from https://github.com/bilawalsidhu/gods-eye-view @ b210ab0)
1. **A browser app with a thin local Node proxy instead of a hosted backend**: The globe runs entirely in the browser (index.html, src/main.js), while server/providers/*.js expose per-source proxies (live flights, space, traffic, CCTV, radio, OpenAI) bound to localhost, so keys stay in a local .env and there is no server-side database.
2. **Every data source is a separate layer module behind package exports**: package.json "exports" maps each feed to its own module (./layers/flights, ./layers/vessels, ./layers/satellites, ./layers/cctv, …) and scripts/check-package-boundaries.mjs plus check-import-directions.mjs enforce the import rules between them.
3. **Keyless by default, provider keys as in-app upgrades**: Esri imagery, keyless terrain and public feeds work without accounts; Cesium ion, Google Photorealistic 3D Tiles and OpenAI keys are added from the in-app POWER UP panel (src/keySetup.js, server/standalone/key-setup) and written to an owner-only local .env.
4. **Colocated node:test unit tests plus Puppeteer QA scripts**: Logic lives in small policy modules (e.g. src/cockpitVisionPolicy.js) with a sibling *.test.mjs run by scripts/run-unit-tests.mjs, while dozens of scripts/qa-*.mjs Puppeteer scripts exercise rendering, traffic, transit and voice routing in a real browser.
5. **No UI framework; hand-written DOM modules under src/ui**: Panels, HUD, cockpit and director tooling are plain JavaScript modules (src/ui/*.js, src/hud.js) exported through package.json, keeping the dependency list to about ten runtime packages centred on cesium.
---
## 4. NON-NEGOTIABLE ARCHITECTURAL GUARDRAILS
1. **Monorepo & Modular Separation**:
- Structure as a Turborepo monorepo with strict package boundaries:
- `apps/web`: Application UI, routing, layouts, and server endpoints.
- `packages/ui`: Shared design tokens, CSS variables, and Radix UI primitive components.
- `packages/db`: Database schemas, client singleton, declarative migrations, and seed scripts.
- `packages/config`: Shared TypeScript, ESLint, and build configurations.
2. **Strict Type Safety & Zero `any` Policy**:
- Enable `strict: true`, `noImplicitAny: true`, and `strictNullChecks: true`.
- Validate ALL external inputs, API request bodies, and query parameters with **Zod** schemas before execution.
3. **Frontend & Rendering Guidelines**:
- Utilize Vite 6 with TanStack Router for fully type-safe routing. Manage server state and caching via TanStack Query v5 with optimistic UI updates.
4. **Design System & Aesthetics**:
- Keep every color, radius, shadow and font in a single token file (CSS variables) and consume tokens everywhere; never hardcode hex values in components.
- Prefer crisp 1px borders and one subtle shadow scale over blurry default shadows. Pair one sans-serif for body/headings with one monospace for tags, badges, metrics, and code.
5. **Data Layer & Reliability**:
- Write declarative schema definitions with foreign keys, composite indexes on queried filters, and automated timestamp triggers.
- Use connection pooling and prepared statements for serverless database execution.
---
## 5. STEP-BY-STEP SCAFFOLDING ROADMAP
- **Phase 1: Workspace & Root Config**: Initialize package manager, monorepo configuration (`turbo.json`, `tsconfig.base.json`, `package.json`).
- **Phase 2: Database Schema & Client**: Set up the data layer: client, connection pool, models, and migration scripts.
- **Phase 3: Design Tokens & UI Primitives**: Build accessible `Button`, `Input`, `Card`, `Badge`, and layout wrappers inside `packages/ui`.
- **Phase 4: Core Application Routes & Handlers**: Implement primary authentication, user session handling, and application routes.
- **Phase 5: Quality Assurance & Build Verification**: Run `tsc --noEmit`, ESLint, Prettier, and smoke test suites to ensure zero compilation or runtime errors.
---
## 6. EXECUTION INSTRUCTIONS
1. Review all specifications, architectural guardrails, and stack choices above.
2. Present the full monorepo directory tree structure.
3. Systematically generate the complete, production-ready codebase according to the 5-phase roadmap above — starting with the root workspace setup, followed by the database schema, UI design system package, and full-stack application routes until the repository is fully scaffolded and ready to run.Frequently asked about God's Eye View
What is God's Eye View built with?
God's Eye View is a plain JavaScript browser app built on the Cesium 3D globe engine and bundled with Vite. A small local Node.js proxy layer under server/providers fetches live feeds, and an optional OpenAI realtime voice agent controls the globe.
Does God's Eye View need a backend or database?
No database is used. The only server-side code is a set of localhost-bound Node.js provider proxies that forward requests to public data sources and keep API keys in a local .env file.
Can I run God's Eye View without API keys?
Yes. It starts with Esri satellite imagery, keyless terrain and public flight, satellite, earthquake and camera feeds. Cesium ion, Google Photorealistic 3D Tiles and OpenAI keys are optional upgrades added in the app.
How do I self-host God's Eye View?
Clone the repository, use Node.js 24 or 26, run npm ci, npm run doctor and npm run dev, then open localhost:4173. A Pinokio launcher offers a one-click install on Windows, macOS and Linux.
One email a month: new deep dives and stack trends
New source-audited architectures, head-to-head comparisons and the monthly stack report. No spam, unsubscribe anytime.
Similar architectures
- Fast Jev CompactionClassicClaude Code Plugin · SoloShares Node.js
- Jev UltrafastClassicBrowser Agent · 2-5 peopleShares JavaScript
- Next.jsHybridFullstack React Framework · 1M+ MAUShares JavaScript · Node.js
- BrowserlessClassicHeadless Browser Automation Infrastructure · 2-5 PeopleShares Node.js · Puppeteer
- Tailwind CSSClassicUtility-First CSS Engine & Framework · 1M+ MAUShares Vite · Node.js
- PocketBaseClassicEmbedded Backend · SoloShares JavaScript · Vite