Focused Lesson Viewer
Published Jul 4, 2026
The Focused Lesson Viewer is where learning actually happens in Praxis924. Once an admin publishes a lesson, learners read it in a single-column, distraction-free reader at /learn/lessons/[id] — the four AI-generated sections, a collapsible chapter rail to jump between them, sources cited inline, a per-framework timeline for context, and a direct link to ask Lucy about what you're reading. This walkthrough is for learners (and admins verifying published output): by the end you'll know how to open a lesson, navigate it, follow its sources, and move into practice without losing your place.
What you'll need
- A registered, verified account (register with email verification, then sign in).
- At least one lesson in
publishedstatus. Draft orgeneratinglessons don't appear in the library — if you're an admin, publish the lesson from/adminfirst. - Nothing else. The viewer is read-only and login-gated, so your progress is tracked automatically as you go.
Step 1 — Find a published lesson
Go to /learn. This is the library of published lessons, organized by Technology → Framework → Lesson. Browse to the framework you're studying and pick a lesson. Every lesson you see here has finished the generation workflow and reached generated, then been marked published — so the four sections and exercises are all present.
Click the lesson to open the viewer at /learn/lessons/[id].
Step 2 — Read in the single-column reader
The viewer deliberately shows one column of content, not tabs, sidebars of widgets, or split panes. It renders the lesson's four sections in reading order:
- main_explanation — the core concept.
- practical_explanation — how it's applied.
- key_principles — the rules worth remembering.
- summary — the recap.
Each section was written and then AI-reviewed with a score during generation, and low-scoring sections were improved before publish — so what you're reading is the refined version. Markdown renders with proper headings, code blocks, and lists in the dark theme.
Step 3 — Jump around with the chapter rail
On the side sits a collapsible chapter rail listing the four sections. Click any entry to jump straight to it — handy when you're reviewing and only need key_principles, or want to re-read the summary before an exercise.
Collapse the rail to reclaim horizontal space and go fully distraction-free; expand it again when you want to navigate. The rail is a map, not a second reading surface — the content always stays in the single column.
Tip: For a quick review pass before a mock interview or a spaced-review resurfacing, collapse the rail, jump to summary, then to key_principles. Two clicks gets you the high-value recap without scrolling the whole lesson.
Step 4 — Follow the sources inline
Where a lesson was grounded in a dataset attached to its framework (via RAG), its Sources appear inline rather than being buried in a footer. As you read, you can see which retrieved chunks backed a claim. This is what separates a grounded lesson from a generic one — the citations let you verify the material and dig deeper into the original source.
If a lesson shows no sources, it wasn't grounded in a dataset (it was generated from raw content) — that's expected, not an error.
Step 5 — Use the timeline for context
The viewer also shows a per-framework timeline so you always know where this lesson sits in the larger sequence — what came before, what comes next. It doubles as a roadmap: your completed lessons are reflected there, so the viewer isn't an isolated page but a stop on a tracked path through the framework.
Step 6 — Ask Lucy without leaving the lesson
Stuck on a concept? Use the Ask Lucy link in the viewer. Because you're opening the chat from a lesson, Lucy folds that lesson's content into her system prompt (capped at ~3000 characters), so her answers cite and stay anchored to the material in front of you instead of answering generically. It's a streaming chat with provider failover, personality, and safety guardrails — ideal for "explain this differently" or "give me another example."
Step 7 — Move into practice
The viewer is for reading. When you're ready to do, head to the separate /practice/[lessonId] workspace, where the interactive exercises (mcq, fill_blank, calculation) and the coding challenge live. Keeping practice out of the reader is intentional: reading stays focused, and practice gets its own full workspace with the execution sandbox and AI grading. Your completions and challenge-passed status flow back into your progress summary.
When it goes wrong
| Symptom | Likely cause | What to do |
|---|---|---|
Lesson isn't in /learn | Still draft or mid-generating | Admin publishes it once status is generated |
| A section looks thin or empty | A gap slipped through generation | Admin runs Fill Gaps — it regenerates only the missing sections |
| No Sources shown | Lesson wasn't RAG-grounded | Expected; it was generated from raw content |
| Lucy answers generically | Chat wasn't opened from the lesson | Use the Ask Lucy link inside the viewer, not a fresh chat |
| Exercises missing from the viewer | They're not there by design | Open /practice/[lessonId] instead |
Note: The viewer is login-gated. If you hit it while signed out, sign in and reopen the link — your position and progress tracking depend on an authenticated session.
What you get
A reading experience that respects your attention: one column, a rail you can hide, sources you can trust, and a timeline that keeps you oriented — with Lucy one click away and practice one route away. Next, finish the read, jump to /practice/[lessonId] to attempt the exercises and coding challenge, and watch your completion %, accuracy, and streak update in your progress summary. Lessons you've read will also resurface on a spaced-review schedule, so the viewer is where you'll return to reinforce what you learned.