mirror of
https://github.com/koala73/worldmonitor.git
synced 2026-04-25 17:14:57 +02:00
* docs(mintlify): add Route Explorer + Scenario Engine workflow pages Checkpoint for review on the IA refresh (per plan docs/plans/2026-04-19-001-feat-docs-user-facing-ia-refresh-plan.md). - docs/docs.json: link Country Resilience Index methodology under Intelligence & Analysis so the flagship 222-country feature is reachable from the main nav (previously orphaned). Add a new Workflows group containing route-explorer and scenario-engine. - docs/route-explorer.mdx: standalone workflow page. Who it is for, Cmd+K entry, four tabs (Current / Alternatives / Land / Impact), inputs, keyboard bindings, map-state integration, PRO gating with free-tier blur + public-route highlight, data sources. - docs/scenario-engine.mdx: standalone workflow page. Template categories (conflict / weather / sanctions / tariff_shock / infrastructure / pandemic), how a scenario activates on the map, PRO gating, pointers to the async job API. Deferred to follow-up commits in the same PR: - documentation.mdx landing rewrite - features.mdx refresh - maritime-intelligence.mdx link-out to Route Explorer - Panels nav group (waits for PR 2 content) All content grounded in live source files cited inline. * docs(mintlify): fix Route Explorer + Scenario Engine review findings Reviewer caught 4 cases where I described behavior I hadn't read carefully. All fixes cross-checked against source. - route-explorer (free-tier): the workflow does NOT blur a numeric payload behind a public demo route. On free tier, fetchLane() short-circuits to renderFreeGate() which blurs the left rail, replaces the tab area with an Upgrade-to-PRO card, and applies a generic public-route highlight on the map. No lane data is rendered in any tab. See src/components/RouteExplorer/ RouteExplorer.ts:212 + :342. - route-explorer (keyboard): Tab / Shift+Tab moves focus between the panel and the map. Direct field jumps are F (From), T (To), P (Product/HS2), not Tab-cycling. Also added the full KeyboardHelp binding list (S swap, ↑/↓ list nav, Enter commit, Cmd+, copy URL, Esc close, ? help, 1-4 tabs). See src/components/RouteExplorer/ KeyboardHelp.ts:9 and RouteExplorer.ts:623. - scenario-engine: the SCENARIO_TEMPLATES array only ships templates of 4 types today (conflict, weather, sanctions, tariff_shock). The ScenarioType union includes infrastructure and pandemic but no templates of those types ship. Dropped them from the shipped table and noted the type union leaves room for future additions. - scenario-engine + api-scenarios: the worker writes status: 'done' (not 'completed') on success, 'failed' on error; pending is synthesised by the status endpoint when no worker record exists. Fixed both the new workflow page and the merged api-scenarios.mdx completed-response example + polling language. See scripts/scenario-worker.mjs:421 and src/components/SupplyChainPanel.ts:870. * docs(mintlify): fix third-round review findings (real IDs + 4-state lifecycle) - api-scenarios (template example): replaced invented hormuz-closure-30d / ["hormuz"] with the actually-shipped hormuz-tanker-blockade / ["hormuz_strait"] from scenario- templates.ts:80. Listed the other 5 shipped template IDs so scripted users aren't dependent on a single example. - api-scenarios (status lifecycle): worker writes FOUR states, not three. Added the intermediate "processing" state with startedAt, written by the worker at job pickup (scenario- worker.mjs:411). Lifecycle now: pending → processing → done|failed. Both pending and processing are non-terminal. - scenario-engine (scripted use blurb): mirror the 4-state language and link into the lifecycle table. - scenario-engine (UI dismiss): replaced "Click Deactivate" with the actual × dismiss control on the scenario banner (aria-label: "Dismiss scenario") per src/components/SupplyChainPanel.ts:790. Also described the banner contents (name, chokepoints, countries, tagline). - api-shipping-v2: while fixing chokepoint IDs, also corrected "hormuz" → "hormuz_strait" and "bab-el-mandeb" → "bab_el_mandeb" across all four occurrences in the shipping v2 page (from PR #3209). Real IDs come from server/_shared/chokepoint- registry.ts (snake_case, not kebab-case, not bare "hormuz"). * docs(mintlify): fix fourth-round findings (banner DOM, webhook TTL refresh) - scenario-engine: accurate description of the rendered scenario banner. Always-present elements are the ⚠ icon, scenario name, top-5 impacted countries with impact %, and dismiss ×. Params chip (e.g. '14d · +110% cost') and 'Simulating …' tagline are conditional on the worker result carrying template parameters (durationDays, disruptionPct, costShockMultiplier). The banner never lists affected chokepoints by name — the map and the chokepoint cards surface those. Per renderScenarioBanner at src/components/SupplyChainPanel.ts:750. - api-shipping-v2 (webhook TTL): register extends both the record and the owner-index set's 30-day TTL via atomic pipeline (SET + SADD + EXPIRE). rotate-secret and reactivate only extend the record's TTL — neither touches the owner-index set, so the owner index can expire independently if a caller only rotates/reactivates within a 30-day window. Re-register to keep both alive. Per api/v2/shipping/webhooks.ts:230 (register pipeline) and :325 (rotate setCachedJson on record only). * docs(mintlify): fix PRO auth contract (trusted origin ≠ PRO) - api-scenarios: 'X-WorldMonitor-Key (or trusted browser origin) + PRO' was wrong — isCallerPremium() explicitly skips trusted-origin short-circuits (keyCheck.required === false) and only counts (a) an env-valid or user-owned wm_-prefixed API key with apiAccess entitlement, or (b) a Clerk bearer with role=pro or Dodo tier ≥ 1. Browser calls work because premiumFetch() injects one of those credentials per request, not because Origin alone authenticates. Per server/_shared/premium-check.ts:34 and src/services/premium-fetch.ts:66. - usage-auth: strengthened the 'Entitlement / tier gating' section to state outright that authentication and PRO entitlement are orthogonal, and that trusted Origin is NOT accepted as PRO even though it is accepted for public endpoints. Listed the two real credential forms that pass the gate. * docs(mintlify): fix stale line cite (MapContainer.activateScenario at :1010) Greptile review P2: prose cited MapContainer.ts:1004 but activateScenario is declared at :1010. Line 1004 landed inside the JSDoc block. * docs(mintlify): finish PR 1 — landing rewrite, features refresh, maritime link-out Completes the PR 1 items from docs/plans/2026-04-19-001-feat-docs-user- facing-ia-refresh-plan.md that were deferred after the checkpoint on Route Explorer + Scenario Engine + CRI nav. No new pages — only edits to existing pages to point at and cohere with the new workflow pages. - documentation.mdx: landing rewrite. Dropped brittle counts (344 news sources, 49 layers, 24 CII countries, 31+ sources, 24 typed services) in favor of durable product framing. Surfaced the shipped differentiators that were invisible on the landing previously: Country Resilience Index (222 countries, linked to its methodology page), AI daily brief, Route Explorer, Scenario Engine, MCP server. Kept CII and CRI as two distinct country-risk surfaces — do not conflate. - features.mdx: replaced the 'all 55 panels' Cmd+K claim and the stale inventory list with family-grouped descriptions that include the panels this audit surfaced as missing (disease- outbreaks, radiation-watch, thermal-escalation, consumer-prices, latest-brief, forecast, country-resilience). Added a Workflows section linking to Route Explorer and Scenario Engine, and a Country-level risk section linking CII + CRI. Untouched sections (map, marker clustering, data layers, export, monitors, activity tracking) left as-is. - maritime-intelligence.mdx: collapsed the embedded Route Explorer subsection to a one-paragraph pointer at /route-explorer so the standalone page is the canonical home. Panels nav group remains intentionally unadded; it waits on PR 2 content to avoid rendering an empty group in Mintlify.
34 lines
3.7 KiB
Plaintext
34 lines
3.7 KiB
Plaintext
---
|
|
title: "Introduction"
|
|
description: "World Monitor is an open-source, real-time global intelligence dashboard that aggregates news, markets, military and maritime activity, infrastructure data, and AI-powered analysis into a single map-first interface."
|
|
---
|
|
|
|
World Monitor is a real-time situational-awareness platform for people who need to understand what is happening in the world beyond traditional news headlines. The core surface is a 3D globe (or flat map) with toggleable data layers for conflict, military, maritime, aviation, infrastructure, and natural events; a panel system for synthesised intelligence and markets; a daily AI brief; and two flagship workflows (Route Explorer and Scenario Engine) for reasoning about supply-chain disruption. It ships as five specialised variants from one codebase — geopolitics, technology, finance, commodities, and positive global trends — each pre-configured for its audience.
|
|
|
|
The platform is designed for journalists, security analysts, researchers, PRO subscribers running operational workflows, and anyone who needs a faster read on a complex global situation than open-web searching allows.
|
|
|
|
## What you can do
|
|
|
|
- **Monitor global events in real time** on a 3D globe or flat map with toggleable data layers for military flights, naval vessels, satellites, earthquakes, wildfires, cyber threats, disease outbreaks, radiation, and more
|
|
- **Read an AI-generated daily intelligence brief** that synthesises the day's headlines into a structured, source-attributed summary — viewable in the dashboard, as a public share link, or as a social-ready image carousel
|
|
- **Screen country-level risk two ways**: the [Country Instability Index](/country-instability-index) for a high-frequency stress signal on a curated country set, and the [Country Resilience Index](/methodology/country-resilience-index) for a 222-country resilience score across 5 domains and 13 dimensions, refreshed every 6 hours
|
|
- **Plan shipments with [Route Explorer](/route-explorer)** — a full-screen keyboard-first workflow that resolves chokepoint exposures, alternative corridors, land routes, and country-level impact for any origin-destination-commodity combination
|
|
- **Run disruption scenarios with the [Scenario Engine](/scenario-engine)** — pre-built conflict, weather, sanctions, and tariff-shock scenarios that paint impact across chokepoints, sectors, and countries directly on the map
|
|
- **Analyse financial signals** including market quotes, commodity prices, prediction markets, central-bank rates, EU macro indicators, and Gulf-economy dashboards
|
|
- **Connect your own agent** via the [MCP server](/mcp) — Claude, Cursor, and other MCP clients can call curated WorldMonitor tools over OAuth 2.1 or a direct API key
|
|
- **Run entirely in your browser** with optional offline AI capabilities via ONNX Runtime Web, keeping your data on your device
|
|
|
|
## Quick links
|
|
|
|
- **New here?** Start with [Getting Started](/getting-started) for installation and setup
|
|
- **Want the quick tour?** [Features & Interface](/features) walks through the map, layers, panels, and Cmd+K
|
|
- **Want to understand the system?** Read [Architecture](/architecture) for how the pieces fit together
|
|
- **Building an integration?** Start with the [Quickstart](/usage-quickstart) and browse the [API Reference](/api/ConflictService.openapi.yaml)
|
|
- **Connecting an AI agent?** Set up the [MCP server](/mcp)
|
|
- **Interested in the data sources?** See [Data Sources](/data-sources)
|
|
- **Want to contribute?** Read [Contributing](/contributing) for code style and PR process
|
|
|
|
## License
|
|
|
|
World Monitor is open source under [AGPL-3.0](/license). Free for personal, educational, and research use. Commercial use requires a [separate license](/license#commercial-use-requires-a-separate-license).
|