Page: Student Dashboard
Code: SDSH Route:
/dashboard/learning Access: Authenticated Priority: P0 Status: In Scope Purpose
Central hub for students to track their enrolled courses, upcoming sessions, learning progress, and quickly access key actions.
Connections
Incoming (users arrive from)
| Source | Trigger | Notes |
|---|---|---|
| LGIN | Successful login (Student role) | Default post-login destination |
| SGUP | Successful signup | After onboarding |
| Nav | "Dashboard" link | Global navigation |
| SROM | "Back to Dashboard" | After session ends |
| CCNT | "Dashboard" link | From course content |
| Any page | Logo click (logged in) | May go to dashboard |
Outgoing (users navigate to)
| Target | Trigger | Notes |
|---|---|---|
| CCNT | "Continue Learning" on course card | Resume course content |
| SBOK | "Book Session" / "Schedule" | Book next session |
| SROM | "Join Session" | Active session join |
| CDET | Course title click | View course details |
| FEED | "Community" nav | Go to feed |
| CBRO | "Browse Courses" | Find new courses |
| PROF | "Profile" nav | Edit profile |
| STPR | "Your Teacher" link | View assigned ST |
| NOTF | Notification bell | View all notifications |
Data Requirements
| Entity | Fields Used | Purpose |
|---|---|---|
| enrollments | id, course_id, student_teacher_id, status, enrolled_at | Enrolled courses list |
| courses | id, title, thumbnail, slug | Course display |
| module_progress | enrollment_id, is_complete | Progress calculation |
| course_curriculum | id, course_id | Total modules for progress |
| sessions | id, scheduled_start, status, teacher_id | Upcoming sessions |
| certificates | id, type, course_id, issued_at | Earned certificates |
| users (ST) | name, avatar | Assigned teacher display |
| notifications | count where is_read = false | Notification badge |
Sections
Header Bar
- • Greeting: "Welcome back, [Name]!"
- • Notification bell with unread count → NOTF
- • Quick stats: X courses, Y upcoming sessions
Upcoming Sessions
- • **Priority section** - shows next 3 sessions
- • Each session card:
- • "View All Sessions" → separate sessions view or modal
- • Empty state: "No sessions scheduled. [Book one now]"
My Courses (Enrolled)
- • Grid or list of enrolled courses
- • Each course card:
- • Empty state: "You haven't enrolled in any courses. [Browse courses]"
Recent Activity
- • Timeline of recent actions:
- • Last 5-10 items
Certificates & Achievements
- • Grid of earned certificates
- • Each shows:
- • "Become a Student-Teacher" CTA if eligible
Quick Actions
- • "Browse Courses" → CBRO
- • "View Certificates" → section anchor or separate page
- • "Update Profile" → PROF
User Stories Fulfilled
- • US-S009: Access personalized dashboard
- • US-P003: View enrolled courses and progress
- • US-P060: See upcoming sessions on dashboard
States & Variations
| State | Description |
|---|---|
| New User | No courses, prominent "Browse Courses" CTA |
| Active Student | Courses in progress, sessions scheduled |
| Session Starting | "Join Now" prominently displayed |
| Course Complete | "Congratulations" banner, ST path CTA |
| Multi-Role | May show tabs/sections for other roles (see TDSH) |
Mobile Considerations
- • Sessions section at top (most time-sensitive)
- • Course cards stack vertically
- • Sticky "Join Session" button if session imminent
- • Bottom navigation bar
Error Handling
| Error | Display |
|---|---|
| Data load fails | "Unable to load dashboard. [Retry]" |
| Session join fails | "Unable to join session. [Try again]" |
Analytics Events
| Event | Trigger | Data |
|---|---|---|
`page_view` | Page load | courses_count, sessions_count |
`continue_learning` | Continue clicked | course_id, progress_pct |
`book_session` | Book clicked | course_id |
`join_session` | Join clicked | session_id |
`browse_courses` | Browse clicked | from_empty_state |
API Calls
| Endpoint | When | Purpose |
|---|---|---|
`GET /api/users/me` | Page load | Current user profile |
`GET /api/enrollments` | Page load | Enrolled courses with progress |
`GET /api/sessions?upcoming=true&limit=3` | Page load | Next 3 upcoming sessions |
`GET /api/certificates` | Page load | Earned certificates |
`GET /api/notifications/count` | Page load | Unread notification count |
`GET /api/activity?limit=10` | Page load | Recent activity timeline |
Notes
- • Consider real-time session countdown
- • Push notifications for session reminders
- • Multi-role users: Dashboard adapts (see CLAUDE.md Phase 3.7)
- • CD-033: "Schedule Later" option should be visible in booking flow