Skip to content

feat: Expand preset library — cybersecurity, climate, Korea, healthcare presets with sample GeoJSON data #29

@alohays

Description

@alohays

Problem

monitor-forge currently offers only 7 presets across 3 domains (technology, finance, geopolitics). This causes several issues:

  1. Limited domain coverage: worldmonitor covers 5+ domains (geopolitics, tech, finance, commodity, positive news) while monitor-forge only has 3. High-demand domains like cybersecurity, climate/environment, Korea news, and healthcare are missing
  2. All map layers are empty: Every preset has layers: []. Despite the map being a core feature, applying a preset shows nothing but an empty map
  3. No sample GeoJSON data: The data/geo/ directory only has a single test file. Without real usable data per preset, users can't experience the value of map layers
  4. Minimal map configuration: Most presets don't enable advanced features like dayNightOverlay, atmosphericGlow, or idleRotation

As a result, applying a preset only produces "RSS news feed + empty map", making it hard for users to appreciate monitor-forge's full potential.

Solution

Phase 1: Add new domain presets (4 domains, 8 presets)

Preset Domain Sources Panels Description
cyber-minimal cybersecurity 3 2 Krebs on Security, Bleeping Computer, CISA Alerts
cyber-full cybersecurity 7+ 4 + CVE DB, VirusTotal Blog, Threat Intelligence RSS, Dark Reading
climate-minimal climate 3 2 NASA Climate, Carbon Brief, NOAA
climate-full climate 6+ 4 + Natural disaster data, IPCC, Climate Home News
korea-minimal korea 3 2 Yonhap News, Hankyoreh, Chosun Ilbo
korea-full korea 7+ 4 + Bank of Korea, Korean tech news, KOSPI-related
health-minimal healthcare 3 2 WHO, CDC, NIH
health-full healthcare 6+ 4 + PubMed, The Lancet, ProMED

Phase 2: Add map layers and GeoJSON to existing presets

Add meaningful layers and sample data to existing -full presets:

  • tech-full: data/geo/tech-hubs.geojson (global tech hub points layer)
  • finance-full: data/geo/financial-centers.geojson (global financial centers)
  • geopolitics-full: data/geo/conflict-zones.geojson (conflict zone points)
  • cyber-full: data/geo/threat-origins.geojson (cyber threat origin points)
  • climate-full: data/geo/natural-disasters.geojson (recent natural disaster locations)

Phase 3: Enhance preset metadata

Add a _meta field to preset JSON for richer display in the wizard and preset list:

{
  "_meta": {
    "category": "cybersecurity",
    "difficulty": "beginner",
    "requires_api_keys": ["GROQ_API_KEY"],
    "optional_api_keys": ["OPENROUTER_API_KEY"],
    "preview_description": "Real-time cyber threat intelligence dashboard"
  }
}

Implementation Details

  1. Create preset files: Add 8 JSON files to presets/ directory

    • Each preset uses only working, publicly accessible RSS/API URLs
    • korea-* presets set language: "ko" for Korean-language sources
  2. GeoJSON data files: Add domain-specific sample data to data/geo/

    • Each file contains 10-30 lightweight Features
    • Follow FeatureCollection + properties pattern
  3. Update existing presets: Add GeoJSON-referencing layers to tech-full.json, finance-full.json, geopolitics-full.json

    • Use data.source: 'static', data.path: 'data/geo/<file>.geojson' pattern
  4. Improve preset list command: Update forge/src/commands/preset.ts to display _meta info (category, difficulty, required keys)

Acceptance Criteria

  • 8 new preset files are added to presets/
  • All RSS URLs in each preset are working, publicly accessible feeds
  • At least 5 domain-specific GeoJSON files are added to data/geo/
  • The 3 existing *-full presets each have at least 1 map layer added
  • All presets pass MonitorForgeConfigSchema.parse() validation
  • forge preset list displays 15 presets (existing 7 + new 8)
  • forge preset apply <name>forge validate passes without errors for all new presets
  • GeoJSON files referenced by layers pass forge validate static file existence checks

Priority Rationale

Presets define the "out-of-the-box" experience. Even if Issue #28's onboarding wizard guides users perfectly, a weak preset selection means a weak first impression. Empty map layers fail to showcase the map feature's value. The korea-* presets directly serve the project's target user base, while cyber-* and climate-* cover globally high-interest domains.

Metadata

Metadata

Assignees

No one assigned

    Labels

    enhancementNew feature or requesthigh-impactHigh-impact feature for project growthmapMap engine and visualizationpreset-requestRequest for a new presetpriority: highShould fix soon

    Projects

    No projects

    Milestone

    No milestone

    Relationships

    None yet

    Development

    No branches or pull requests

    Issue actions