Interactive India map tracking Rainmatter Foundation partners, their artefacts, and place-based landscape profiles — rooted in Rainmatter's Place Thesis.
Live dashboard: https://ashwask.github.io/RFPartnerMap/
Three tabs:
- Atlas — Leaflet map with partner HQ markers, state boundaries, geographies of work, and Rainmatter / Ecosystem network layers.
- Artefacts — per-organisation research ledger with tangible / intangible artefact cards and source trails.
- Place — 13 landscape / bioregion profiles with health indicators, needs, risks, and partner coverage.
Portfolio lenses: All · Urban · Rural · Conservation · Buildings · Data.
| File | Purpose |
|---|---|
dashboard.html |
Single-page dashboard (inline CSS + JS) |
dashboard.inline.js |
Map + tab logic |
partners.js |
MAP_PARTNERS — partner records (name, lat/lon, category, states, rm flag) |
artefacts.js |
ORG_ARTEFACT_OVERRIDES + ORG_ARTEFACT_ALIASES — per-org research |
india_geo.js, india_states_simple.geojson |
Geographic boundaries |
export_dashboard_payload.js, export_dashboard_excel.py |
Export utilities |
index.html |
Redirect to dashboard.html |
CLAUDE.md |
Working conventions |
The repo is public. Two ways to contribute:
External (fork + PR)
- Fork this repo on GitHub
- Clone your fork, branch, and make changes
- Open a pull request against
main
Collaborator (direct) If you've been added as a collaborator:
git clone https://github.com/Ashwask/RFPartnerMap.git
cd RFPartnerMap
git checkout -b my-change
# edit
git add . && git commit -m "describe change"
git push -u origin my-change
# open PR on GitHubGitHub Pages auto-rebuilds on merge to main (30–90 s).
- Add an entry to
MAP_PARTNERSinpartners.jswith all fields includingrm(true= Rainmatter Foundation partner,false= ecosystem partner). - Add an entry to
ORG_ARTEFACT_OVERRIDESinartefacts.jswithstatus: "researched", summary, tangible / intangible artefacts, and sources. - If the partner name differs from the canonical artefact name, add a mapping to
ORG_ARTEFACT_ALIASES. - Verify every partner resolves to an override:
node -e "eval(require('fs').readFileSync('partners.js','utf8')); \ eval(require('fs').readFileSync('artefacts.js','utf8')); \ var missing = MAP_PARTNERS.filter(function(p){ \ var c = ORG_ARTEFACT_ALIASES[p.name] || p.name; \ return !ORG_ARTEFACT_OVERRIDES[c]; \ }); \ console.log('Missing:', missing.length); \ missing.forEach(function(p){ console.log(' -', p.name); });"
- Categories:
Urban,Rural,CnR,Buildings— do not invent new ones. - State names must match the GeoJSON; use
STATE_ALIASfor normalisation."Pan India"is valid. - Coordinates: WGS84 lat/lon of the organisation's HQ.
- All dashboard JS is vanilla ES5 (no modules, no arrow functions, no
let/const). This keeps the dashboard a single drop-in HTML file.
See CLAUDE.md for the full scope and out-of-scope list.
No build step. Just serve the directory:
python3 -m http.server 8000
# open http://localhost:8000/dashboard.htmlCreative Commons Attribution-NonCommercial 4.0 International (CC BY-NC 4.0) — free to share and adapt for non-commercial purposes, with attribution to Rainmatter Foundation. See LICENSE.