About this project

Worship Presenter Web is a self-hosted hub designed to turn a worship service rundown into finished slides. It was built for a Seventh-day Adventist congregation but is adaptable to any church running a similar order of service, since slide templates are data rather than code. The core workflow takes a rundown—pasted into a web form or posted via a secret-gated webhook from a chat bot—and produces three outputs from a single hydrated slide plan: a downloadable PowerPoint deck for offline use, a full-screen browser slideshow, and a dual-screen presenter mode with a separate projector window. This means the same layout drives all four outputs (PowerPoint, web slideshow, projector, and live preview) with no per-format layout code. Key features include: - Rundown intake via web form or webhook, with unrecognised lines surfaced rather than silently dropped. - Hymn resolution from a local corpus of 695 hymns, looked up by number and expanded into title and lyric slides with refrains repeated after each verse. - 28 editable slide templates stored in a SQLite registry with a canvas editor for moving, resizing, and styling elements, plus the ability to add custom text boxes and shapes. - Presenter mode with current and next slide, a thumbnail filmstrip, a slide list, a jump-to-any-slide grid, the run sheet, and a real second window that can be dragged onto the projector. - Blank screen functionality to black out the projector and restore without losing position. - Selectable transitions (none, cut, fade, dissolve, push) applied identically to the deck and browser. - Scripture lookup pulling KJV passages onto the projector during the service. - Announcement flyers with image uploads or allow-listed URLs. - Accounts and roles with per-person admin and operator accounts, rate-limited sign-in, and revocable sessions. The application ships with two default corpora: a song book corpus (695 hymns from the Seventh-day Adventist Hymnal) and a KJV Bible corpus (66 books, 1,189 chapters, 31,102 verses). Both are committed to the repository so a clone resolves hymn numbers and scripture references with no network connection at boot. The corpora are reconciled from their committed files on every boot. Technical requirements are Go 1.24 and Node.js 22 or newer. Storage uses SQLite with no separate database server. The stack includes a Go API, a React SPA built with Vite, and a PPTX worker. The quickstart involves cloning the repository, running npm install, npm run setup (which generates .env with fresh secrets, creates the database, seeds the slide registry, and prints the admin password), and npm run dev to start the Go API on port 3000 and the React SPA on port 5173. The project includes a constitution directory with guidelines for private data handling, deployment documentation, and decision records. A test fails if congregation data reaches a tracked file, protecting against accidental publication of sensitive information. The repository starts from a single initial commit with a synthetic example congregation, as the original private repository contained real member names, photographs of identifiable people including minors, private message screenshots, and a live payment code. The code is licensed under MIT, but the name Worship Presenter Web, the acronym WDI, and the icon or wordmark are not covered by the MIT licence. Third-party content including the hymn corpus is covered separately in ATTRIBUTIONS.md. The project encourages adaptation for other traditions and hymnals, with support for adding additional song book corpora alongside the shipped one.