Audio playback service for the VTO Book Reading project. Salesforce/Fragforce volunteers record themselves reading children's books aloud, and this service delivers those recordings to patients at Children's Miracle Network hospitals via QR codes.
- A donated children's book has a QR code + password printed inside
- A child or caregiver at the hospital scans the QR code
- They enter the password on the playback page
- The recording streams in their mobile browser - no app, no login
| Component | Description |
|---|---|
| Playback service | Password-gated page at read.fragforce.org/b/{id} that streams audio via HLS/MSE |
| Narrator portal | Web interface where volunteers select a book, record in-browser, and submit attestation |
| Admin panel | Manage books, narrators, recordings, QR codes, and passwords |
QR Code + Password -> read.fragforce.org/b/{id} -> Password Gate -> Stream-Only Playback (HLS/MSE)
Narrator Portal -> Book Queue -> Pre-flight -> In-Browser Recording -> Attestation -> Upload
Admin Panel -> Book/Narrator Management -> QR + Password Generation -> Attestation Review
- Password-gated access - each QR code has a unique password, server-side validated
- Stream-only playback - HLS or MSE, no direct file download links
- No public indexing -
noindexmeta tags andX-Robots-Tagheaders - Attribution - publisher, author, illustrator displayed on page and spoken at beginning/end of each recording
- Opaque URLs - short random IDs (nanoid), not human-readable slugs
These are commitments made in the publisher permission letter.
- Hosted on existing Fragforce infrastructure (container-based)
- Cloudflare for DNS and caching
read.fragforce.orgsubdomain- CI/CD builds images, manual deploy to dev/prod
- Expected scale: 10-50 audio files, under 1 GB total
Built with Django, deployed as Docker containers. Consistent with fragforce.org and existing Fragforce infrastructure patterns.
See REQUIREMENTS.md for full technical requirements.
- September 2026 - publisher permissions deadline
- October 2026 - VTO event (recordings happen here)
MIT - see LICENSE