Objective: Replace the Midwest Conference Line with a cost-effective, reliable worship service streaming system for Old German Baptist Brethren Church, New Conference (OGBBC) congregations.
MVP Scope: Single congregation implementation with host-controlled broadcasting and listener call-in functionality.
- Node.js (v14 or higher)
- SignalWire account with a phone number
-
Clone the repository.
-
Create a
.envfile in the root directory with your SignalWire credentials:SIGNALWIRE_PROJECT_ID=your_project_id_here SIGNALWIRE_TOKEN=your_token_here SIGNALWIRE_SPACE_URL=your_space_url.signalwire.com SIGNALWIRE_PHONE_NUMBER=+1234567890 HOST_PIN=12345 PORT=3000 -
Build and run with Docker:
docker build -t sermon-streaming . docker run -p 3000:3000 --env-file .env sermon-streaming -
Configure SignalWire:
- Create a Relay Application in SignalWire dashboard
- Set the topic to "ogbbc-sermon"
- Assign this application to your phone number in Phone Numbers > Your number > Settings > "Handle Calls Using" > Select the Relay application.
- Host: Call the SignalWire phone number and enter the host PIN (default: 1234) to start the conference.
- Listeners: Call the same number to join as muted participants.
- Recordings are saved locally in the
recordings/directory (created automatically).
- Run linting:
npm run lint - Add tests in future phases.
- Host authentication via PIN
- Host-controlled conference initiation
- Muting of listeners enforced
- Live audio broadcasting from host to listeners
- Automatic recording of services
- Conference state management
- Basic administrative dashboard
- Phone line input (landline/cellular)
- Scalable to multiple concurrent listeners
- Recording storage and retrieval (local initially, cloud in Phase 2)
- Simple administration interface
- Cost-effective operation
- Secure PIN handling and data encryption
- Backend: Node.js with Express
- Telephony: SignalWire Realtime API
- Frontend: Svelte with @immich/ui
- Storage: Local storage (database in future phases)
- Hosting: VPS (DigitalOcean)
- Call Handler - Processes incoming calls and routing
- Authentication System - PIN-based host verification
- Conference Manager - LaML-based conference control
- Status Tracker - Real-time conference state management
- Admin Dashboard - Web-based monitoring interface
Goal: Working single-congregation conference line
- Set up SignalWire account and phone number
- Implement basic call handling logic
- Create basic Express server structure
- Implement call routing logic
- Build host authentication system
- Test basic call flow
- Implement conference creation/management
- Add participant tracking
- Build recording functionality
- Create conference state management
- Test multi-participant scenarios
- Build basic admin dashboard
- Add real-time status updates
- Unit and integration testing
- Comprehensive testing with church members
- Documentation and user guides
- Production deployment
Goal: Reliable production system
- Error handling and logging
- Environment configuration
- Migrate recordings to cloud storage
- Backup/failover procedures
- Performance monitoring
- Security hardening
- Cost analysis and monitoring
Goal: Support multiple OGBBC congregations
- Multi-tenant architecture
- congregation-specific configuration
- Centralized administration
- Recording organization by congregation
- Bulk testing across congregations