doxa-maps/library/scripts/posters
Doxa Maps 536989a3d5 UPG-100 posters: the scripture banner sits under the title, then one three-column band like the footer's (the facts | Jesus' strategy | What is a UPG-100 List?), the text a size larger; the series is named UPG-100 List
Opt-in per series (series.json poster.headColumns, on for upg100 only), so every other series' sheet is
unchanged. The band is laid out by ONE function that both measureHeader() and the renderer call, so the
predicted header height is the drawn one. Each block is centred in an equal column between short rules,
with the inset the first column lacked. The footer's three blocks are drawn at the 13.5px they are wrapped
and spaced for (they were drawn at 12px), so the text grows with no change to the lines or the band's
height, and they are centred for that size.
SOURCE ONLY: the served copies, the integrity pin and its bundles are regenerated at landing.
2026-10-02 19:14:35 +00:00
..
data feat(posters): capitals and major cities on the country maps 2026-09-24 02:21:03 +00:00
fixtures The browser/Node sheet equivalence check can measure on a fresh checkout 2026-09-29 12:44:25 +00:00
build-gallery.mjs doxa-maps — portable bundler for embeddable JAMstack maps 2026-09-10 01:53:07 +00:00
build-hd-gallery.mjs Source comments state design history and measurements as facts, without quoting or naming anyone 2026-10-01 00:37:17 +00:00
emit-countries.mjs Source comments state design history and measurements as facts, without quoting or naming anyone 2026-10-01 00:37:17 +00:00
export-public.mjs Source comments state design history and measurements as facts, without quoting or naming anyone 2026-10-01 00:37:17 +00:00
generate.mjs Pin wording: shared points and key-city clusters claim only what is certain 2026-10-02 09:21:54 +00:00
make-previews.py make-previews wrote every WebP one directory too high 2026-09-29 21:29:44 +00:00
osm-basemap.mjs Source comments state design history and measurements as facts, without quoting or naming anyone 2026-10-01 00:37:17 +00:00
packet-strings.json Packet: point 4's reference names what prints, Mark 5:18–20, in all 11 locales (the Gerasene reading keeps 5:12–20), re-pinned; the passage gets a 700-char ceiling beside its 250 floor, in the render gate and, headless, in the structure gate for every locale 2026-09-30 11:55:51 +00:00
packet.mjs Source comments state design history and measurements as facts, without quoting or naming anyone 2026-10-01 00:37:17 +00:00
pin-poster-render.mjs Serve the packet text at print time instead of bundling all 11 languages 2026-09-29 08:33:44 +00:00
poster-regions.mjs Source comments state design history and measurements as facts, without quoting or naming anyone 2026-10-01 00:37:17 +00:00
publish-html.mjs The map template draws a map-only vertical page for the prayer packet 2026-09-29 02:16:27 +00:00
README.md Source comments state design history and measurements as facts, without quoting or naming anyone 2026-10-01 00:37:17 +00:00
series.json UPG-100 posters: the scripture banner sits under the title, then one three-column band like the footer's (the facts | Jesus' strategy | What is a UPG-100 List?), the text a size larger; the series is named UPG-100 List 2026-10-02 19:14:35 +00:00
serve-persist.sh doxa-maps — portable bundler for embeddable JAMstack maps 2026-09-10 01:53:07 +00:00
serve.sh doxa-maps — portable bundler for embeddable JAMstack maps 2026-09-10 01:53:07 +00:00
shoot.mjs doxa-maps — portable bundler for embeddable JAMstack maps 2026-09-10 01:53:07 +00:00
verify-posters.mjs check:no-free-identifiers reads internal/ and .mjs, which is where two gates had crashed on load 2026-09-29 09:18:26 +00:00

library/scripts/posters/ — UPG-100 poster generator

Renders one 3ft × 3ft print poster per zone (28 today) for the my-upg-100-list profile, from the profile's own data. It ships inside the repo alongside that data on purpose — reaching for the data via an env var once silently rendered stale posters (Nepal, Bangladesh, Bhutan vanished).

  bun run posters  ->  posters:shoot  ->  (WebP previews)  ->  bun run build
   HTML per zone       PNG @3000²        assets/previews/     app shows them
  • generate.mjs is the template; shoot.mjs screenshots to PNG (Firefox only — privacy-first policy).
  • A template change is not visible in the app until previews are regenerated and the app rebuilt.
  • Exported PNGs go to a sibling folder (../../../upg-100-posters/), never public/ — Capacitor packages public/ wholesale.

Full reference — files, env vars, gotchas, measurement discipline: ../../../documentation/architecture/poster-generation.md.