|
|
|
|
|
by al00sh
105 days ago
|
|
So I've been following the Iran situation pretty closely and realized I was spending half my time just trying to figure out what actually happened where. The closest thing out there is Liveuamap, but it's turned into more of a general news aggregator — it dumps everything onto the map (protests, political statements, weather, car accidents) with intrusive ads layered on top, and the sourcing is mostly just reposted tweets with no real verification or analysis. There are a couple other websites like that with similar issues. I wanted something that's specifically focused on combat events, verified before it goes live, and has actual video of what happened.
So I built Defogwar (https://www.defogwar.com). It's an interactive Mapbox GL globe where military events — airstrikes, drone strikes, artillery, ground assaults, territorial changes — get plotted with color-coded factions. You can scrub through time with a slider to watch how things unfold day by day, and clicking on a marker pulls up details with embedded video when we have footage. No news ticker spam, no political commentary pins, just combat events with sources.
The interesting engineering problem was the data pipeline. Manually curating conflict events doesn't scale when you're one person, so I built an ingestion layer that pulls RSS feeds and Telegram channels, pipes everything through Gemini 2.0 Flash for structured extraction (coordinates, event type, factions, severity), and dumps it into a review queue. Everything goes through human review (me) before it hits the map. The hardest thing was removing propaganda from the AI curation. Obviously it'll still be somewhat objective but I had to often remove manually some phrases like "The terrorist state of Iran" or "Tel-Aviv was completely battered" because honestly the best combat footage sometimes comes from propaganda like sources. I'm working on the curation pipeline to better filter that out in the future though. Getting good coordinates from posts/news articles was also a hassle.
Stack is Next.js 14, PostgreSQL with PostGIS for spatial queries, Cloudflare R2 for video storage (zero egress fees was the selling point there), and Railway for hosting.
Right now the coverage is focused on the Iran conflict — I had other conflicts mapped but pulled them back to get the data quality right first. Those will come back once the pipeline is solid. In the future I'm also considering putting historical conflicts on there from throughout history. Would love feedback on the map UX and if anyone has suggestions for good open OSINT data sources I'm not using. |
|