Printable idea sheet
tutorials_section
reqlan rq/site/site.rq:448
Katz 0.046
The site exposes `/tutorials` and `/tutorials/slug/` as statically generated pages.
Catalog and deck ids come from authored manifest.jsonc.
Each detail page embeds the Reveal player iframe at `/presentations/player/?deck=<id>` using assets / SITE_BASE_PATH-aware `sitePath`.
Each detail page hosts a unified transport chrome ( `<<` `<` steps `>` `>>` ) that drives slide nav in the embedded player via postMessage, plus lesson jumps ( tutorial_player_transport ).
Location hierarchy chrome: tutorial_location_crumb.
Blurb and try-this live on the catalog and inside the slides, not as page chrome.
The player is an App Router page ( presentation_player_route ) so it static-exports under `trailingSlash` without colliding with `public/` HTML.
Sync ( sync_presentations ) converts authored deck / catalog JSONC under presentations into runtime JSON under `public/presentations/`, and copies assets plus vendored Reveal. js ( player shell excluded ).
The catalog links to assessment_page for certification.
- implementation
- page.tsx, ["../../site/src/app/tutorials/slug/page.tsx"], page.tsx, tutorials.ts, TutorialPlayerShell.tsx, PresentationPlayer.tsx, sync-presentations.mts, parse-jsonc.ts
- status
- done
Interactive page: tutorials_section