The map got coordinates and a language code by matching each group's NAME against the pin dataset. That left 285 unplaceable and, worse, unsearchable: no ISO code is no key to look them up by in any pool, so the access table could only report them as "not searched" — nobody had been able to ask. Doxa's own per-group endpoint carries both, and their robots.txt disallows nothing. /api/people-groups/detail/<slug> gives primary_language and latitude and longitude for every one: Akha to ahk, Akeu to byo, Alxa Mongols to xal, Ajja to krs — four the name join had failed. So the name matching is not improved, it is REMOVED. It was always a guess wearing a join's clothes: Akha in Laos sat beside Akha Jipea, Akha Jaweuy and Akha Piso in the pins, and any pick among them would have invented a language for a people. The publisher saying which language their group speaks ends the guessing. 2,107 of 2,107 placed. Zero without a language code. The "not searched" rung is gone from the access ladder because nothing is unsearched any more. The gap grows 281 to 381, and that is the point: those 100 groups were always without the gospel in their language, and the map could not say so because it did not know what their language was. The fetcher runs its controls in band both ways before trusting a record — a real slug must return a language and coordinates, an impossible one must not — so a site answering 200 with an empty body could not fill this table with silence. IMB's own access and engagement fields come along beside ours, never merged into them, because where two sources disagree that disagreement is worth seeing. |
||
|---|---|---|
| .. | ||
| external-bundles | ||
| 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.