Build journal
CORELearning 5 min read

Roadmap & Progress

Published Jul 9, 2026

Track completion, exercise accuracy, and streaks on a per-framework timeline that reflects real readiness.

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 published lessons — if /learn is 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:

MetricWhat it measuresFed by
Completion %Share of the framework's lessons you've marked completeLessonProgress
AccuracyCorrect exercise attempts over total attemptsExerciseAttempt
StreakConsecutive days you've kept studyingActivity 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

SymptomLikely causeFix
Lesson missing from the timelineIt's draft or not fully generatedAn 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 stuckNew lessons were published, enlarging the denominatorExpected — the framework grew; keep going
Accuracy dropped after a good sessionA batch of new attempts averaged inExpected; 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.

Published in build journal