Know where every learner is,the moment you look
Edushade tracks progress at the lesson, quiz, assignment and file level — not as a vibe but as real records. Each carries a status (not started, in progress, completed), a time_spent in seconds, a last_position for video lessons and a last_accessed_at timestamp. The program-level dashboard rolls those records into a histogram of completion distribution, a trend chart of completed-vs-in-progress-vs-not-started over time, and a student-by-quiz score table. Filter by section. Filter by cohort. The picture moves with you.
What the progress engine actually tracks
Every action a learner takes writes a progress record. Every progress record carries the fields that let you act on it — status, time, score, last position, last activity. The program dashboard rolls those records into the four views you'll actually use; the per-learner endpoint goes deeper when you need to know exactly where one person is.
Per-Lesson, Per-Quiz, Per-Assignment Records
Each curriculum item — lesson, quiz, assignment, file — gets its own progress record per learner. Status, time spent in seconds, attempt count, best and latest score, started-at, completed-at and last-accessed-at all stored on the same row.
Three Honest States
Not started, in progress, completed. The status field reflects exactly where the learner is on the item — no averaged blob, no fuzzy state. The dashboard counts each bucket separately.
Video Position and Watched Segments
Video lessons store last_position in seconds and a JSONB watched_segments list of [start, end] ranges, so the platform knows what the learner actually watched and where they left off — not just an open/close flag.
Histogram, Trend, Student-by-Quiz Table
The program-level progress dashboard renders four things: a histogram of how many learners finished how many subjects, a completion trend chart, a student-detail table with quiz scores side by side, and a section filter that rescopes the lot.
Notifications That Fire on Their Own
Course started, course milestone reached, course inactive reminder, course completed (to the learner) and learning-path course unlocked — published as events when the underlying progress changes.
Same Source for Learner, Instructor and Admin
Learners read their own progress on their dashboard with continue-learning links, time totals and remaining tasks. Instructors and admins read the cohort and platform views off the same records — one source of truth, three audiences.
Progress at the lesson level — not just the course level
A course's progress percentage is the average of every item inside it, but the percentage on its own is the wrong unit when something needs attention. Open one learner and you'll see every lesson, every quiz, every assignment with its own status — not started, in progress or completed — plus the time_spent on each, the last_position on every video, the best and latest score on every quiz, the last_accessed_at timestamp so you know when they were last in. No wondering whether 40% means a half-finished video or one out of three sections; the detail is right there.
Per-lesson, per-quiz, per-assignment, per-file progress records
Status enum: not_started, in_progress, completed
time_spent in seconds and last_accessed_at timestamp on each record
Video lessons store last_position and the watched-segments list
Open one learner — heatmap, streak and every metric that matters
Pick a learner from a cohort or the enrollment list and their overview opens with the whole picture on one page. A 90-day activity heatmap traces when they actually showed up; current streak, best streak and total active days sit next to it. Below the header a grid of widgets reads the enrollment's metrics record — Overall Progress, Completion Rate, Avg and Best Assessment Score, Lessons Completed, Assessments Completed, Total Time Spent, Avg Session Duration, Total Active Days, Est. Time Remaining and an on-track / behind / completed status. Status badges call out completed enrollments and certificate eligibility, and the same page lets an admin Reset Progress or Complete Progress in one click when intervention is needed.
90-day activity heatmap with current, best and active-day streak counts
Overall progress and completion-rate widgets read straight off the enrollment metrics
Avg and best assessment score, lessons completed and assessments completed counters
Total time spent, avg session duration and estimated time remaining at a glance
On-track / behind / completed status, with admin Reset and Complete Progress actions
Notifications that close the loop without a manager in the middle
Progress data isn't only pretty in a dashboard. It triggers the right message at the right moment. Course Started fires the day a learner enrolls and opens content. Course Milestone Reached fires at the percentage you've configured. Course Inactive Reminder fires when a learner has been quiet for too long. Course Completed (Learner) fires the moment the enrollment status flips to completed. Learning Path Course Unlocked fires when the next course in a path becomes available. Each event lands on the channels the learner has opted into — email, in-app, SMS, push.
course.started — short welcome the day enrollment activates
course.milestone_reached — cheer at the percentage you pick
course.inactive_reminder — gentle nudge after the configured quiet period
course.completed.learner — celebration when the status flips to completed
learning_path.course_unlocked — next course in the path becomes available
Same numbers — learner, instructor, admin
Learners see their own progress on their dashboard — every course they're enrolled in, where they left off, the time they've put in, the remaining tasks queue, the streaks card, the improvement-areas list. Instructors and admins read the cohort and the program off the same records — the dashboard's histogram and trend, the student-by-quiz table, the per-learner detail when something needs a closer look. Three views, one source of truth, no spreadsheet diff between what the learner sees and what the instructor sees.
Learner dashboard — courses, time spent, continue-learning, remaining tasks
Instructor / admin dashboard — histogram, trend, student-by-quiz table
Per-learner detail endpoint — per-entity status when you need to drill
Same enrollment status that drives certificate issuance
From the first lesson to the certificate, on its own
There's nothing to set up. Once a learner is enrolled, every action they take writes a progress record, and the dashboard, the notifications and the certificates all read from the same source.
Enroll the learner
Add them to the course, learning path or cohort. The enrollment record is created with not_started progress; from here, every lesson opened, quiz submitted and assignment turned in writes a progress record automatically.
Watch progress build itself
Lessons, quizzes, assignments — every action writes a progress record. The learner sees their bar climb on their dashboard. The instructor sees the cohort's histogram and trend on theirs. Admins see the platform-wide rhythm on Course Performance and Cohort Insights. The certificate fires the moment the enrollment status flips to completed.
Spot who needs a hand
Open the learner's Programs Overview and every course, learning path and cohort they're in lines up on one page. Switch tabs to scope by program type, then expand a program — sections roll up their own percentage, every lesson, quiz and assignment carries its progress bar and a Completed / In Progress / Not Started badge. The vague 'they're behind' becomes the exact item they're stuck on, in one scroll — and that's the right place to start a five-minute message.
Progress Tracking FAQ
What instructors and admins ask the first time they sit down with the progress dashboard.
Can't find what you're looking for?
Contact SalesStart Building Learning Your Way
Set up courses, programs, and learning experiences without forcing your process into rigid software. A connected system for students, educators, and administrators.
Build Your Academy