Roadmap & Progress
Published Jul 9, 2026
Praxis924 doesn't just record which lessons you clicked through — it tracks whether you actually learned them. The Roadmap & Progress view turns a framework's lessons into an ordered, level-grouped timeline and layers your real signals on top: completion, exercise accuracy, and a study streak. A spaced-review schedule then quietly resurfaces lessons you're due to revisit. This guide is for learners who want the timeline to reflect genuine readiness — not just a wall of checkmarks — and for admins who want to understand what those signals mean.
What you'll need
- A learner account (register with email verification, then log in).
- At least one framework with
publishedlessons — if/learnis empty, an admin hasn't published anything yet. - A few minutes to complete a lesson and attempt its exercises, so there's real progress to see.
Note: Progress is per-learner and per-framework. Two people working through the same Technology → Framework will see different timelines because the signals are tied to your LessonProgress and ExerciseAttempt records.
Step 1 — Open the framework roadmap
From /learn, pick a Technology and drill into a Framework, or open any lesson and use its per-framework timeline. The roadmap renders every lesson in that framework as a vertical timeline, grouped by level so the basics sit at the top and advanced material below. Each node shows the lesson's title and its state, so you can see at a glance where you are in the arc and what's next.
Only published lessons appear here. A lesson still in draft — or one whose generation_status is pending, generating, or failed — won't show up until an admin publishes it.
Step 2 — Read the lesson, then mark it complete
Open a lesson node to enter the focused reading view and work through the four sections: main_explanation, practical_explanation, key_principles, and summary. When you've genuinely absorbed it, mark the lesson complete. Behind the scenes this writes a LessonProgress record via the /progress endpoint, and the timeline node flips to its completed state.
Completion is a deliberate act, not an inferred one. Scrolling to the bottom doesn't count you as done — you tell the system when you're ready, which keeps your completion percentage honest.
Step 3 — Practice to build accuracy
Completion alone is a weak signal, so pair it with exercises. Open the lesson's Practice workspace at /practice/[lessonId] and attempt the questions — mcq, fill_blank, and calculation kinds. Every submission is stored as an ExerciseAttempt, and those attempts feed your accuracy number.
If the lesson has a coding challenge, your code runs in a real execution sandbox and is AI-graded with line-level feedback and a score. Passing the challenge sets the challenge-passed flag on your LessonProgress — a stronger readiness marker than reading alone.
Tip: Accuracy reflects all your attempts, not just your best one. If you want the number to mean something, attempt exercises after you understand the material, not as a guessing warm-up.
Step 4 — Read your progress summary
Your progress summary rolls the raw records into three headline numbers:
| Metric | What it measures | Fed by |
|---|---|---|
| Completion % | Share of the framework's lessons you've marked complete | LessonProgress |
| Accuracy | Correct exercise attempts over total attempts | ExerciseAttempt |
| Streak | Consecutive days you've kept studying | Activity over time |
Read them together. High completion with low accuracy means you're moving fast but not retaining — a cue to slow down and re-practice. A healthy streak with stalled completion means you're showing up but not finishing lessons.
Step 5 — Let spaced review resurface lessons
Finishing a lesson isn't the end of it. Praxis924 runs a spaced-review schedule that resurfaces lessons you completed earlier, timed so you revisit them before the material fades. When a lesson comes due, it's flagged for review — treat those as first-class work, not optional revision. Re-completing or re-practicing a resurfaced lesson keeps both your accuracy and your streak reflecting current readiness rather than a one-time peak.
When it goes wrong
| Symptom | Likely cause | Fix |
|---|---|---|
| Lesson missing from the timeline | It's draft or not fully generated | An admin must publish it in /admin |
| Marked complete but node didn't update | /progress write didn't land (network/auth) | Refresh; confirm you're still logged in (JWT may have expired) |
| Completion % looks stuck | New lessons were published, enlarging the denominator | Expected — the framework grew; keep going |
| Accuracy dropped after a good session | A batch of new attempts averaged in | Expected; it's cumulative, not last-session-only |
Warning: A short-lived access token can silently expire mid-session. If "mark complete" seems to do nothing, you may be unauthenticated — the refresh token should renew you, but a hard refresh forces it.
What you get
Follow this loop and the roadmap stops being a checklist and becomes a readiness map. You'll know, per framework, how far you've come (completion %), how well it stuck (accuracy), whether you're consistent (streak), and what to revisit next (spaced review). From here: chase down any review-flagged lessons, push a weak-accuracy topic back through /practice, or run a mock interview on a framework you've completed to pressure-test whether the numbers match reality.