Page: Course Content
Code: CCNT Route:
/courses/[slug]/learn Access: Authenticated Priority: P0 Status: In Scope Purpose
Deliver course content to enrolled students, track module progress, enable self-paced learning, and provide access to resources and help features.
Connections
Incoming (users arrive from)
| Source | Trigger | Notes |
|---|---|---|
| SDSH | "Continue Learning" | From dashboard |
| CDET | "Start Learning" (enrolled) | From course detail |
| SROM | "Back to Course" | After session |
| NOTF | Course update notification | Content updates |
Outgoing (users navigate to)
| Target | Trigger | Notes |
|---|---|---|
| SBOK | "Schedule Session" | Book tutoring session |
| SROM | "Join Session" (if imminent) | Active session |
| SDSH | "Dashboard" / back | Return to dashboard |
| CDET | "Course Info" | View course details |
| CHAT | "Course Chat" (Block 2+) | Course community chat |
| HELP | "Summon Help" button (Block 2+) | Request help from ST |
| STPR | ST name in "Your Teacher" | View assigned ST |
Data Requirements
| Entity | Fields Used | Purpose |
|---|---|---|
| courses | id, title, slug | Course context |
| course_curriculum | id, title, description, duration, video_url, document_url, module_order, session_number | Content display |
| module_progress | enrollment_id, module_id, is_complete | Progress tracking |
| enrollments | id, student_teacher_id | Enrollment status |
| sessions | scheduled_start | Upcoming session reminder |
| users (ST) | name, avatar | Assigned teacher |
| user_availability | is_available | Helpers online (Block 2+) |
| homework_assignments | id, title, instructions, due_within_days, is_required | Homework display |
| homework_submissions | id, status, submitted_at, feedback | Student submissions |
| session_resources | id, name, type, r2_key | Course resources |
Sections
Header Bar
- • Course title
- • Progress bar (% complete)
- • "Dashboard" link → SDSH
- • "Schedule Session" → SBOK
Sidebar / Navigation Panel
- • **Tab Navigation:**
- • **Module List (Modules tab):**
- • **Your Teacher:**
- • **Quick Actions:**
Content Area
- • **Module Header:**
- • **Learning Objectives:**
- • **Video Player (if video_url):**
- • **Document Link (if document_url):**
- • **Module Content:**
- • **Mark Complete:**
- • **Navigation:**
Summon Help Button (Block 2+)
- • Floating button: "Summon Help"
- • Shows online helpers count: "3 available"
- • Opens HELP modal when clicked
- • Source: CD-023
Homework Tab
- • **Assignment List:**
- • **Assignment Detail (Expanded):**
- • **Submitted Work:**
- • **Empty State:** "No homework assignments yet"
- • **Source:** Brian Review 2025-12-26
Resources Tab
- • **Resource List:**
- • **Session Recordings:**
- • **Empty State:** "No resources available yet"
- • **Source:** Brian Review 2025-12-26
Progress Summary (Bottom/Footer)
- • Overall progress: X of Y modules complete
- • "Continue to Next Module" or "You've completed all modules!"
- • Certificate prompt when done
User Stories Fulfilled
- • US-S052: Access enrolled course content
- • US-S053: View course materials (videos, docs)
- • US-S054: Track module progress
- • US-S055: Mark modules complete
- • US-S056: Navigate between modules
- • US-S062: Access "Summon Help" feature (Block 2+)
- • US-S063: See helpers available (Block 2+)
- • US-S087: View homework assignments for enrolled courses
- • US-S088: Submit homework with text and/or file attachments
- • US-S089: See feedback on submitted homework
- • US-S090: Resubmit homework if reviewer requests changes
- • US-S091: Access recordings of sessions attended
- • US-S092: Download materials shared by ST
- • US-S093: Access course-level resources
States & Variations
| State | Description |
|---|---|
| In Progress | Modules partially complete, current highlighted |
| Not Started | First visit, start at module 1 |
| Complete | All modules done, certificate prompt |
| Module View | Viewing specific module content |
| Video Playing | Video player active |
| Session Imminent | "Join Session" banner if within 15 min |
Mobile Considerations
- • Sidebar becomes bottom sheet or hamburger menu
- • Video player full-width
- • Mark complete is prominent
- • Module navigation via swipe or buttons
- • Floating Summon Help accessible
Error Handling
| Error | Display |
|---|---|
| Not enrolled | "You must be enrolled. [Enroll now]" → CDET |
| Content load fails | "Unable to load content. [Retry]" |
| Video fails | "Video unavailable. Try external link." |
| Progress save fails | "Unable to save progress. Trying again..." |
Analytics Events
| Event | Trigger | Data |
|---|---|---|
`page_view` | Page load | course_id, module_id |
`module_viewed` | Module accessed | module_id, time_spent |
`module_completed` | Marked complete | module_id |
`video_played` | Video started | module_id, video_url |
`video_completed` | Video watched >90% | module_id |
`summon_help_clicked` | Summon clicked | module_id, helpers_count |
`session_scheduled` | Schedule clicked | course_id |
API Calls
| Endpoint | When | Purpose |
|---|---|---|
`GET /api/courses/:course_id` | Page load | Course info |
`GET /api/courses/:course_id/curriculum` | Page load | All modules |
`GET /api/enrollments?course_id=:course_id` | Page load | Enrollment + ST info |
`GET /api/enrollments/:enrollment_id/progress` | Page load | Module progress |
`POST /api/enrollments/:enrollment_id/progress` | Mark complete | Update module progress |
`GET /api/sessions?course_id=:course_id&upcoming=true&limit=1` | Page load | Next session reminder |
`GET /api/helpers/available?course_id=:course_id` | Page load (Block 2+) | Available helper count |
`GET /api/courses/:course_id/homework` | Homework tab | List homework assignments |
`GET /api/homework/:id` | Assignment clicked | Assignment details |
`GET /api/homework/:id/submissions/me` | Assignment clicked | My submission status |
`POST /api/homework/:id/submit` | Submit button | Submit homework |
`PUT /api/submissions/:id` | Update submission | Update before reviewed |
`GET /api/courses/:course_id/resources` | Resources tab | Course resources list |
`GET /api/resources/:id` | Download clicked | Get download URL |
Notes
- • CD-019: External LMS content (videos/docs hosted externally)
- • Progress is self-reported (checkbox model)
- • Consider video progress tracking (pause/resume points)
- • Certificate prompt when all modules complete
- • Block 2+: Summon Help is goodwill-based feature