Tech Stack
Map Rendering Architecture
The map uses a hybrid rendering strategy optimized for each platform: Desktop (deck.gl + MapLibre GL):- WebGL-accelerated layers handle thousands of markers smoothly
- MapLibre GL provides base map tiles (OpenStreetMap)
- GeoJSON, Scatterplot, Path, and Icon layers for different data types
- GPU-based clustering and picking for responsive interaction
- SVG rendering for battery efficiency
- Reduced marker count and simplified layers
- Touch-optimized interaction with larger hit targets
- Automatic fallback when WebGL unavailable
Key Libraries
- deck.gl: High-performance WebGL visualization layers
- MapLibre GL: Open-source map rendering engine
- D3.js: SVG map rendering, zoom behavior (mobile fallback)
- TopoJSON: Efficient geographic data encoding
- ONNX Runtime: Browser-based ML inference
- Custom HTML escaping: XSS prevention (DOMPurify pattern)
No External UI Frameworks
The entire UI is hand-crafted DOM manipulation, no React, Vue, or Angular. This keeps the bundle small (~250KB gzipped) and provides fine-grained control over rendering performance.Build-Time Configuration
Vite injects configuration values at build time, enabling features like automatic version syncing:
This ensures the displayed version always matches the published package, no manual synchronization required.
Installation
WorldMonitor has three setup tracks depending on what you’re doing.1. App-only local dev
Runs the Vite dashboard with no required environment variables. Optional API keys (see below) unlock extra layers and feeds.npm run dev:tech, dev:finance, dev:commodity, dev:happy, and dev:energy.
2. Contributor / full codegen dev
Needed when you touch.proto contracts or regenerate clients. Requires Go 1.21+ (for the buf CLI and sebuf protoc plugins) and Node.js 22+.
make generate before building or pushing whenever you modify .proto files — CI’s proto-check.yml fails if generated output drifts from committed files. See Adding Endpoints for the full proto workflow.
3. Self-hosted Docker stack
The full self-hosted stack (dashboard + Railway-style relay + Redis + seed scripts) requires Node.js 22+, Docker or Podman, and secrets with no safe defaults —RELAY_SHARED_SECRET, REDIS_PASSWORD, and REDIS_TOKEN must be set before docker compose up. See the SELF_HOSTING.md guide in the repository for the complete walkthrough.
API Dependencies
The dashboard fetches data from various public APIs and data sources:Optional API Keys
Some features require API credentials. Without them, the corresponding layer is hidden:
The dashboard functions fully without these keys. Affected layers simply don’t appear. Core functionality (news, markets, earthquakes, weather) requires no configuration.
Project Structure
api/*.js proxies described in older revisions have been replaced by proto-generated domain gateways. See the Architecture doc for the full request path.
Data Attribution
This project uses data from the following sources. Please respect their terms of use.Aircraft Tracking
Data provided by The OpenSky Network. If you use this data in publications, please cite:Matthias Schafer, Martin Strohmeier, Vincent Lenders, Ivan Martinovic and Matthias Wilhelm. “Bringing Up OpenSky: A Large-scale ADS-B Sensor Network for Research”. In Proceedings of the 13th IEEE/ACM International Symposium on Information Processing in Sensor Networks (IPSN), pages 83-94, April 2014.
Conflict & Protest Data
- ACLED: Armed Conflict Location & Event Data. Source: ACLED. Data must be attributed per their Attribution Policy.
- GDELT: Global Database of Events, Language, and Tone. Source: The GDELT Project.
Financial Data
- Stock Quotes: Powered by Finnhub (primary), with Yahoo Finance as backup for indices and commodities
- Cryptocurrency: Powered by CoinGecko API
- Economic Indicators: Data from FRED, Federal Reserve Bank of St. Louis
Geophysical Data
- Earthquakes: U.S. Geological Survey, ANSS Comprehensive Catalog
- Natural Events: NASA EONET - Earth Observatory Natural Event Tracker (storms, wildfires, volcanoes, floods)
- Weather Alerts: National Weather Service - Open data, free to use
Infrastructure & Transport
- Airport Delays: FAA Air Traffic Control System Command Center
- Vessel Tracking: AISstream real-time AIS data
- Internet Outages: Cloudflare Radar (CC BY-NC 4.0)
Other Sources
- Prediction Markets: Polymarket
Acknowledgments
Original dashboard concept inspired by Reggie James (@HipCityReg), with thanks for the vision of a comprehensive situation awareness tool. Special thanks to Yanal at Wingbits for providing API access for aircraft enrichment data, enabling military aircraft classification and ownership tracking. Thanks to @fai9al for the inspiration and original PR that led to the Tech Monitor variant.Limitations & Caveats
This project is a proof of concept demonstrating what’s possible with publicly available data. While functional, there are important limitations:Data Completeness
Some data sources require paid accounts for full access:- ACLED: Free tier has API restrictions; Research tier required for programmatic access
- OpenSky Network: Rate-limited; commercial tiers offer higher quotas
- Satellite AIS: Global coverage requires commercial providers (Spire, Kpler, etc.)
AIS Coverage Bias
The Ships layer uses terrestrial AIS receivers via AISStream.io. This creates a geographic bias:- Strong coverage: European waters, Atlantic, major ports
- Weak coverage: Middle East, open ocean, remote regions
Blocked Data Sources
Some publishers block requests from cloud providers (Vercel, Railway, AWS):- RSS feeds from certain outlets may fail with 403 errors
- This is a common anti-bot measure, not a bug in the dashboard
- Affected feeds are automatically disabled via circuit breakers
License
World Monitor is licensed under the GNU Affero General Public License v3.0 (AGPL-3.0-only). Commercial use is permitted under the AGPL when you comply with its copyleft and source-availability terms. Separate commercial licensing is available as an alternative option for private-source or custom contractual terms. See the License page for full details.Author
Elie HabibBuilt for situational awareness and open-source intelligence gathering.
