Files
ProdDash/band-lineup-display
christian 607d48dbf6 main: Planning Center birthdays, and the Test Birthdays diagnostic
pcoFetchStatus reports a status instead of throwing, so the People probe can
tell "no access" from "no such record"; pcoFetchBirthday reads one person's
birthdate as MM-DD, deliberately discarding the year so a volunteer's age
never lands on this machine. The sync fetches one birthday per unique person,
best-effort — a blocked token just yields '' and never fails the sync.
2026-09-23 17:48:47 -04:00
..

Band Lineup

Stage lineup photos with mic/pack labels, for the backstage screen. Electron, packaged for Windows.

It also carries the ProPresenter Now / Next feature, which exists in two forms that share one engine:

BandLineupDisplay/
├── main.js, preload.js, index.html, renderer.js, styles.css   the Band Lineup app
├── propresenter-core/     the shared ProPresenter 7/20 client — no deps, no Electron
└── propresenter-app/      the standalone Now/Next display + the page the band app serves
Want Do this
Run the backstage app npm start
Show Now/Next on screens around the building In the app: People panel → Studio Displays → Turn On, then bookmark the address it gives you
Host the display without the Band Lineup app cd propresenter-app && node server.js
Build the Windows installer npm run dist

propresenter-core is the single home for every ProPresenter quirk — runtime route discovery on PP20, arrangement-expanded slide totals, uuid-then-name matching for the live item. Fix a quirk there and both programs get it.

Details on the display, the bookmark that survives DHCP, and the Windows firewall gotcha: propresenter-app/README.md.

Testing without ProPresenter

tmp/pp-mock.js is a mock of the ProPresenter network API that advances slides on a timer, including the tricky case where an arrangement repeats a section (43 cues over 41 master slides):

node tmp/pp-mock.js 1599

Then point either program at 127.0.0.1 port 1599.