gospel-by-country carries 242 countries with real per-country counts, and the map uses them for the choropleth and the "where the gap concentrates" sheet. The tables profile had no country table at all, so those numbers lived only inside the map — readable, not exportable — while every other tab there offers CSV and JSON. A mobiliser deciding where to send a team cannot work from a sheet they have to screenshot. Derived, not a second source: every row is read out of gospel-by-country, which is itself refreshed from the pin index, so the table and the map cannot disagree. Three columns because they rank differently and each is somebody's question — groups with nothing, people with nothing, and the share of the country each represents. The default sort is by groups, and the share column is what makes rows like Vanuatu legible: 79 groups with nothing out of 114, 69.3%, which ranks ninth by count and first by share. Region is carried through so the table can be grouped the same way the map's region tab ranks. Curated columns come through as-is and stay null where the curated analysis does not cover the country — null, never zero, because zero is a claim this build cannot make. Verified against the PIN INDEX rather than against the table being tested: 242 countries with pins, 2,901 groups with nothing, worst is PNG at 469. The rendered tab reports 242 rows and its first row reads Papua New Guinea / PNG / Oceania / 831 / 469 / 56.4, with 650 real cells. No page errors. Screenshot read. |
||
|---|---|---|
| .. | ||
| external-bundles | ||
| legacy/upg-neighbor | ||
| people-groups | ||
| posters | ||
| tables | ||
| vendor | ||
| README.md | ||
data/ — the bundler's source-of-truth data
The law: data lives here; public/ is generated. Every folder in data/ is copied into the
served web-root by the build (internal/generate-tree.mjs), exactly like the per-profile data in
plugin-designs/*/data/. You should be able to rm -rf public/ and get it all back with bun run build.
| Folder | Served at | What it is |
|---|---|---|
people-groups/ |
/assets/people-groups/ |
People-group datasets (CSV/JSON) the maps read at runtime |
vendor/ |
/assets/vendor/ |
Third-party runtime assets (e.g. table libraries) |
posters/ |
/assets/posters/ |
Rendered poster webp set (heavy pipeline output; poster walls fetch these) |
tables/ |
/assets/tables/ |
The MERGED served table set (its index.json is the merge; per-profile plugin-designs/*/data/tables are build-time sources) |
external-bundles/ |
not served | Prebuilt map IIFEs vendored from sibling projects (not built here); only the optional layouts/ shell mounted them, so the build no longer copies them into public/ |
Don't edit anything under public/ by hand — change it here (or in plugin-designs/*/data/,
layouts/*/assets/) and rebuild.