WorldView is a global intelligence dashboard I built around an interactive world map. It pairs a tactical 2D map with a 3D orbital globe so you can explore countries and cities, then pull in ranked news headlines for whatever region you select—or browse a worldwide feed when nothing is targeted.
The UI leans into a sci-fi command-center aesthetic: HUD corners, scan overlays, monospace telemetry, and a side panel that surfaces the latest signals with impact badges. Click a country or zoom into cities on the map; the intelligence feed narrows to that target automatically.
These are the technologies and libraries I used to build this project:
You can try the app below. If the embed is blocked by the host's security headers, open the same URL in a new tab.
https://world-view-omega.vercel.app
Dual map modes: Switch between a pannable, zoomable 2D tactical map (Natural Earth projection with graticule, country polygons, and city points) and a WebGL 3D globe powered by globe.gl with auto-rotate and altitude-based city labels.
Country and city targeting: Select any country on the map or drill into major cities when zoomed in. Selection state is shared across both views so you can flip between 2D and 3D without losing context.
Intelligence feed: Headlines are fetched from Google News RSS—worldwide, per-country geo feeds, and city-scoped searches. Articles are deduplicated, cached server-side for five minutes, and ranked by an impact score.
Impact scoring: Each headline gets a 0–100 score and a critical / high / notable / standard label based on keyword significance, source trust (Reuters, BBC, AP, etc.), and recency—so the most relevant stories float to the top.
Responsive side panel: The intelligence panel shows loading skeletons, error recovery, manual refresh, relative timestamps, and direct links to original articles.
The 2D map renders TopoJSON country boundaries from world-atlas data with tiled horizontal looping for seamless panning. City markers use a canvas layer for performance at high zoom levels, while small island territories get dedicated hit targets so tiny regions remain clickable.
The 3D globe is loaded with next/dynamic and ssr: false since globe.gl depends on the browser WebGL context. Country polygons and city points are synchronized with the same selection handlers as the flat map.
News ingestion lives in a server-only module: RSS feeds are parsed on the server, scored, sorted, and exposed through /api/intelligence with CDN-friendly cache headers. The client hook builds query strings from the current map selection (world, country ISO code, or city name) and polls for updates.