Bootstrap: includes/class-bootstrap.php. Blocks register from build/ with category prc-quiz-cast. REST and session cleanup are separate modules.
Modes and rewrites
| Query var | Rewrite | Role |
|---|---|---|
quizCast | quiz/{slug}/cast/ | Host UI |
quizPlay | quiz/{slug}/play/ | Player UI |
Research-team additional rules mirror cast under team prefixes. template_include injects the play template; body classes mark cast/play for CSS.
Block groups
Host tree includes create, setup, lobby, session code/QR, intro, questions, current question/answers, progress, results, resume, and timer blocks (prc-quiz-cast/host*, question-timer).
Player tree includes intro, waiting, questions, current question/answers, progress, and results (prc-quiz-cast/player*).
Loading uses prc-quiz-cast/loading. Editor previews for player blocks wrap content in MobileSafariChrome from @prc/components.
A block_type_metadata filter can attach cast blocks to the Quiz Builder controller allow-list where needed.
Firebase sessions
Rest_API creates session documents with a unique 4-letter join code (retry budget 10). Pace modes: host, self. Timer action values: reveal, advance, none. Finalize persists results into WordPress (Quiz Builder archetypes/groups helpers) and cleans Firebase. Session_Cleanup handles abandoned sessions.
Dependencies
- Quiz Builder (
PRC\Platform\Quiz\Archetypes,Groups) - Firebase via platform
prc-firebase/ VIP private dir service account - Avatar packs in
includes/class-avatars.php