doxa-maps/library/scripts/posters
Doxa Maps 3c1d38bdc8 Packet lists: the three questions head each page ONCE over one grid of tally cells, and both packets open their list with the explanation band, x11
Full detail: the question no longer repeats under every tally cell; the heads stand once per page over the
cells' own columns, and each cell is all tally room (96px columns, taller boxes). The worksheet's boxes
get a little more room too.
Both lists' first page: the intro and the blessing (Numbers 6:24-26, its credit, one line of references, the
wheel pointer) at full width, then ONE band like the poster's (ruled above and below, three columns between
short rules): the pace table (strongest to slower, weekly marked, each load computed from the list), what the
three columns ask, and an EXAMPLE row of tally cells under the table's own heads, exactly as wide as the
tally block and directly over it. One code path (explainTop, explainBand) for both packets.
Measured with a 100-group list in all 11 languages: the worksheet's first page holds 10 rows (the tallest,
ru, keeps 67px), Full detail's 12 under a 640px block (the tallest uses 612); the example sits over the real
cells to the pixel. Gates: packet-variants checks the band in BOTH packets (once, before the first row,
computed paces, one example row, heads once per page); packet-render reads the page sizes from the
renderer, fails a clipped first-page block, and measures text direction against the content box (a padded
cell is still pinned left). New strings x11: howto_bless_col, example_title, example_note.
2026-10-02 21:43:24 +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 lists: the three questions head each page ONCE over one grid of tally cells, and both packets open their list with the explanation band, x11 2026-10-02 21:43:24 +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 The series is the UPG100 List, one term: the posters' series line and side box ('What is a UPG100 List?'), and the packet's series line and funnel, x11 2026-10-02 21:35:04 +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.