Files
ProdDash/modules/band-lineup/README.md
T
Waters ChurchandClaude Fable 5.1 5fb90190ae Band Lineup 1.11.0: into the catalog, and to the guide's rules
The module arrived in the previous commit exactly as it runs in North
Attleboro. This brings it to the interface rules every module follows and
puts it where the admin page can offer it.

The three hide-toggles — names, mic labels, parallax — sat in a folded
"Show / hide" group. Rule 8 puts four or fewer at the top of the gear with
no group at all, so they are ungrouped and first; the Birthday group keeps
its switch. The test-mode select loses its help line (rule 5). Everything
else in the gear was already within the rules, and every title-bar control
was already an icon with a tooltip.

The Planning Center mock moves out of the module folder to tools/, beside
the other upstream mocks, so an install does not download a development
tool with the module; README and CLAUDE.md say how to run it. The version
goes to 1.11.0 so the copy already installed on NA is offered the update
from the repo, and the module joins the README's list.

Co-Authored-By: Claude Fable 5.1 <noreply@anthropic.com>
2026-09-22 09:19:34 -04:00

2.5 KiB

Band Lineup module

The backstage stage board as a ProdDash tile: everyone scheduled on the band / vocal / production teams for the upcoming Planning Center plan, placed into their mic slot with photo, name and mic/pack label. People whose birthday falls in the current service week (Wednesday→Tuesday) get raining confetti and a gold glow.

This is the display half of the standalone Band Lineup Electron app, ported to ProdDash. (The ProPresenter Now/Next half of that app is the separate propresenter-now-next module.)

How it fills the board

  1. Slots are the mic/pack labels you write in admin, one per line, in the order they sit on stage — e.g. [VOX 2] MIX 2, [DRUMS], [MC] MC1. A blank line is an empty spot.
  2. Each refresh the server reads the upcoming plan's team members (any team whose name matches a line in Teams to include), and matches each person to a slot by their Planning Center position — the same loose matching the Electron app uses (matching.js; [VOX 2] MIX 2 takes whoever is on Vox 2). A numbered role only matches the same number, and the MIX n part is ignored, so Vox 2 and Vox 3 never swap.
  3. Photos and birthdays come from Planning Center (birthdays via the People API; only month + day is kept). Photos are cached on disk and served by the module; birthdays drive the confetti.

Manual photos (people not on the plan)

Guest speakers, MCs, stage managers — anyone not scheduled in Planning Center — are pinned per slot from the tile's Edit button (title bar): set a name, optionally upload a photo, optionally a MM-DD birthday. A manual pin overrides the PCO match for that slot and is kept until you Clear it. Uploaded photos live in the ProdDash data directory, never in the repo.

Settings

  • Admin (server-wide): Planning Center credentials, service type, plan, the teams to include, the stage slots, columns, refresh interval.
  • Per tile (gear): birthday confetti on/off + intensity, a force-birthday test picker, parallax, and show/hide for names and mic labels.

Testing without Planning Center

node tools/pco-band-mock.js 24710      # mock PCO
BAND_LINEUP_API_BASE=http://127.0.0.1:24710 node server.js # point the module at it
node modules/band-lineup/matching.test.js                  # slot-matching unit tests

Then in /admin under Band Lineup enter any Client ID + Secret, pick "Sunday Service", and the board fills — one person (on Drums) has a birthday this week, so their tile rains confetti.