World Monitor

How to use this app

A local intelligence dashboard that aggregates curated news feeds into SQLite, displays headlines by category, and overlays situational data on a rotating 3D globe.

Syncing news feeds

Click Sync feeds in the top-right of the dashboard. The app fetches RSS headlines from 30 sources across ten categories and stores new items in a local SQLite database.

  • First visit auto-syncs if the database is empty.
  • Every 15 minutes — server cron adds new headlines (local dev uses built-in scheduling; Vercel uses vercel.json; AWS/EC2 can use system cron calling /api/cron/ingest).
  • With the dashboard tab open, the feed also refreshes every 15 minutes in the browser.
  • The status bar shows how many articles were added and any feed errors.
  • Headlines link out to the original publisher — we do not host full articles.

Intel feed (right rail)

The right panel lists cached headlines grouped by topic. Default width is 320px; drag the vertical divider between the globe and this panel to change width (double-click the divider to reset). Your choice is remembered in this browser. Use the tabs to filter:

  • All — every category with section headers
  • World, Defense, Markets, Tech, Health, Energy, Climate, Science, Cyber, Politics — single-category view

The 24h sitrep above the list is a short curated narrative (not a headline dump) built from free Google News RSS, refreshed about every 5 minutes. It explains what lanes are busiest, which threads repeat, and where to look first. Use the speaker icon to hear the sitrep read aloud (browser text-to-speech). Falls back to local SQLite RSS if Google News is unavailable.

Open the Video tab for two sections: New in the last 24 hours (recent YouTube uploads from tracked channels) and Live channels (24/7) (always-on streams via Live News API). Live streams may show an old start date on YouTube—that is normal for 24/7 wires. No API key required; playback opens on YouTube. Video loads when you open the tab (not on every page load).

Tier badges (T1–T3) reflect source reliability. T1 is wire/official; T3 is niche or aggregator. Click any headline to open it in a new tab.

Global theater (top of left column)

The globe sits above the layer panel in the left column. It uses a Carto basemap (dark or light with your theme) and auto-rotates for a live “situation room” feel.

  • Drag to pan · Scroll to zoom · use +/- controls bottom-right
  • Rotation pauses while you interact and resumes after about 4 seconds
  • HUD readouts (top corners) show projection, zoom, and map center coordinates
  • Click any visible marker, zone, or track to open a popup with details (magnitude, storm name, alert level, etc.)
  • Live events use themed icons (fire, earthquake, cyclone, storm cloud, satellite, and more) instead of plain dots.

Map layers (below the globe)

Layers are shown as a compact grid under the globe. All layers start enabled on first visit — turn chips off to simplify the map. Changes apply immediately above. Live layers fetch from free APIs when their toggle is on.

LayerWhat you see
News densityBlue theater hotspots (EUR, MEA, APAC, etc.)
Conflict zonesRed shaded regions for active conflict areas
AircraftLive OpenSky ADS-B — airborne aircraft worldwide (rotating plane icon by heading). Optional OpenSky login in .env for higher rate limits.
AIS vesselsGreen ship positions on major lanes
InfrastructurePurple chokepoints and strategic ports
EarthquakesLive M4.5+ USGS events (earthquake icon)
WildfiresNASA EONET open fires (default) or FIRMS VIIRS hotspots if FIRMS_MAP_KEY is set
DisastersLive GDACS alerts — earthquakes, cyclones, floods, volcanoes, drought (color = Green / Orange / Red)
Natural eventsAll open NASA EONET events — storms, fires, ice, floods, and more
Severe weatherLive NWS warnings and watches over the United States (polygons)
CyclonesActive tropical cyclones from NOAA NHC (Atlantic & Pacific)
Space weatherNOAA SWPC planetary K-index and G/R/S storm scales (global status markers)
Cyber threatsPurple IOC-style threat markers (demo data)
Regional focusBlue focus rings on key regions

Light & dark theme

Use the Light / Dark button in the top-right (next to the clock on the dashboard, or on this page). Your choice is saved in the browser and restored on the next visit.

Switching theme reloads the map basemap and rebuilds all overlays (a brief moment is normal). Enabled layers and live data refresh automatically afterward.

Admin, data & APIs

Open Admin from the dashboard header (or visit /admin) to inspect ingest runs, RSS feeds, database size, and cron settings. If a sync reports feed errors, open Ingest run log, click the run row, and read the expanded error log (feed name, URL, and HTTP message).

  • Sources / Headlines — header counts reflect enabled feeds and cached articles
  • SQLite database: data/worldmonitor.db (gitignored, local only). Only the latest 1000 ingest runs are stored; older sync history is removed automatically.
  • News: /api/ingest, /api/articles?grouped=1 (includes 24h sitrep), /api/cron/ingest
  • Video: /api/video-feed
  • Optional GOOGLE_NEWS_BRIEF=false or VIDEO_FEED_ENABLED=false in .env (see README)
  • Live map layers: /api/layers/aircraft, /api/layers/earthquakes, wildfires, disasters, natural-events, weather-alerts, cyclones, space-weather
  • Optional FIRMS_MAP_KEY in .env for denser wildfire hotspots (see README)

Quick start checklist

  1. Open the dashboard at /
  2. Wait for the globe to load (or click Sync feeds for headlines)
  3. Explore categories in the intelligence feed
  4. Turn map layers on or off (all start on — earthquakes, wildfires, cyclones, weather, etc.)
  5. Click map markers for event details
  6. Visit Admin to review ingest health and feed status
  7. Drag the globe to inspect a region; zoom in for detail

World Monitor · Next.js + SQLite + MapLibre

Developers: README.md, docs/DATABASE-AND-INGEST.md, docs/INTEL-FEED.md, docs/ADMIN.md, docs/MAP-LAYERS.md