P1, data layer. 855 of Doxa's 2,107 groups are in India and 154 in China — 47.9% of everything this map draws, rendered until now as two flat fills. No other country is close; the third is Sudan at 105. Each group is placed into a province by point-in-polygon on its coordinate: 44 provinces with groups, 998 assigned, 13 provinces holding groups with nothing. China's ADM1 file carries 12 provinces, not 31+, and I expected that to lose groups. Measured instead: 152 of 154 Chinese groups fall inside them and all twelve are used. The file was cut to the provinces where the unreached peoples are, so the subset is the right subset. The 11 groups that land outside every polygon are COUNTED, not dropped — nine Indian and two Chinese, every one of them coastal or an island. That is the predicted failure of placing a people by a single point, and it belongs in the output rather than in a silence. Every row is flagged approximate, because a province here comes from a coordinate that marks where a people is found rather than a settlement, and 108 groups in the roster share a coordinate with another group. Going below the border also exposed something the country view was hiding: Arunachal Pradesh, in the far north-east, is offered TELUGU as its way in, because the curated bridge table names it and a curated bridge outranks the computed one. India's computed default is Hindi, defensible nationally and still wrong for much of the north-east. This table does not fix that. It records it, and says to read the ways-in column as "a language with Scripture and film somewhere in this country" until a bridge can be chosen per province. |
||
|---|---|---|
| .. | ||
| brand | ||
| external-bundles | ||
| fonts | ||
| images | ||
| legacy/upg-neighbor | ||
| people-groups | ||
| posters | ||
| pplr | ||
| tables | ||
| vendor | ||
| README.md | ||
data/ — the bundler's source-of-truth data
The law: data lives here; public/ is generated. public/ holds only the output folder
(public/<tree>/, named by name in vite.doxa-maps-build-config.json) and a generated README. The
build (internal/generate-tree.mjs) copies what the plugins FETCH at runtime from here into
<tree>/assets/, alongside 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/ |
<tree>/assets/people-groups/ (the fetched cuts only) |
People-group datasets (CSV/JSON) the maps read at runtime |
vendor/ |
<tree>/assets/vendor/ |
Third-party runtime assets (e.g. table libraries) |
posters/ |
<tree>/assets/posters/ (opt-in: bundlePosters / posterSources) |
Rendered poster set (heavy pipeline output; the export button fetches these) |
tables/ |
<tree>/assets/tables/ |
The MERGED served table set (its index.json is the merge; per-profile plugin-designs/*/data/tables are build-time sources) |
pplr/ |
<tree>/assets/pplr/ (the fetched files only) |
The PPLR data maps' derived datasets |
fonts/ |
<tree>/assets/fonts/ |
Vendored typefaces (SIL OFL), e.g. Bebas Neue for the regions clone |
images/ |
<tree>/assets/images/ |
Images the plugins fetch (e.g. the regions list's world-map watermark; see its PROVENANCE) |
brand/ |
not served | Logos and brand imagery (sources; the optional library/layouts/app-wrapper-material shell references them) |
legacy/ |
not served | Archived standalone builds kept for reference (e.g. the original upg-neighbor page) |
external-bundles/ |
not served | Prebuilt map IIFEs vendored from sibling projects (not built here); only the optional layouts/ shell mounted them |
fonts/, images/, brand/ and legacy/ moved here from public/assets/ on 2026-09-25 (card
BUILD-OUTPUT-IS-ONE-FOLDER): they were sources that existed only in the generated folder.
Don't edit anything under public/ by hand — change it here (or in plugin-designs/*/data/,
layouts/*/assets/) and rebuild.