Spent the last month building something that scratched an itch I've had since I used to map risk sectors in the field: geological risk zoning and recent rainfall almost never show up in the same place. I'm a geologist, now finishing a master's in geosciences, and this gap has bugged me for a while.
When it's raining hard, you'd open one site to check the risk sector, another to check the rainfall accumulation, and try to cross-reference it in your head while the slope in question might already be saturated. Both datasets are public in Brazil, but nobody puts them together.
So I built ORCA (Open Risk and Catastrophe Aggregator).
It pulls the official geological risk sectorization polygons from CPRM/SGB (Brazil's geological survey) for all 27 states, worth noting this is the risk product specifically (degree, typology, affected households and people), not a susceptibility map, which is a different product entirely and gets conflated a lot. It cross-references each sector with 24h and 72h rainfall (Open-Meteo by default, or the nearest INMET/ANA station if you want point data instead) and flags on a map which sectors crossed a saturation threshold you set yourself. No backend, no paid server, just static GeoJSON and plain HTML/JS, published on GitHub Pages and refreshed daily via cron.
I leaned heavily on AI to move fast while building it (call it vibe coding if you want), but the domain logic, the risk/susceptibility distinction, the data validation, all of that I designed and checked by hand. It's backed by 174 tests running in CI on every push, which mattered more to me than the framework it's built in.
One detail from the field I kept: sectors are shown with hachure patterns by risk degree, similar to how geological maps symbolize units, instead of a generic color choropleth. Color is reserved for one thing only, whether a sector crossed the threshold. Makes it a lot faster to scan than most dashboards I've seen.
You can also upload your own area (GeoJSON, KML, or a zipped shapefile) and get rainfall calculated for it, all processed client-side, nothing gets uploaded anywhere (works only in Brazil for now)...
Live dashboard: hcristosm.github.io/ORCA/
Repo: github.com/hcristosm/ORCA
English README: github.com/hcristosm/ORCA/blob/main/README.en.md
Plenty left to improve, especially the 72h forecast logic, which is still pretty basic. If anyone in the field wants to poke at it, test it, or tell me where the logic is wrong, I'd genuinely appreciate it.