PCO Plan module: Planning Center order of service, following ProPresenter

New module modules/pco-plan: reads the current plan for a chosen Planning
Center Services service type (PAT or OAuth token), streams items with start
times, lengths, keys, descriptions and item notes to tiles (every detail a
per-tile show/hide setting), and follows the propresenter-now-next module's
live item over loopback SSE to highlight the current plan item and track
elapsed vs planned runtime. Ships its own setup page
(/modules/pco-plan/setup.html) to browse folders and pick the service type
through the shell admin API, plus tools/pco-mock.js for development.

Co-Authored-By: Claude Fable 5.1 <noreply@anthropic.com>
This commit is contained in:
Waters Church
2026-09-09 15:42:53 -04:00
co-authored by Claude Fable 5.1
parent a3a68ebd73
commit e7dc235a8a
8 changed files with 2437 additions and 2 deletions
+9
View File
@@ -462,6 +462,15 @@ client-side failures (a tile that fails to start says so in the tile).
overrunning, stopped and elapsed timers plus an LTC timecode that
periodically drops to no-signal (`--no-ltc` serves a ProPresenter without
a timecode API). Point the Timers module at host `127.0.0.1`, port `1600`.
- Planning Center: `node tools/pco-mock.js` (port 24700) — folders, service
types, plans (last week / today / next week), plan times and items with
songs, keys and item notes, behind a Basic/Bearer auth check. Planning
Center is a cloud API, so the module reads its base URL from the
environment instead of admin config: run ProdDash with
`PCO_PLAN_API_BASE=http://127.0.0.1:24700 node server.js`, enter any
Application ID + Secret in `/admin`, and pick "Sunday Service" in
`/modules/pco-plan/setup.html`. Its item titles match `pp-mock.js`, so
running both mocks exercises the ProPresenter matching.
**The resilience checklist** — every module must pass this before it's done: