Page: My Students (Creator)

Code: CMST Route: /dashboard/teaching/students Access: StudentTeacher Priority: P0 Test Script: scripts/page-tests/test-CMST.sh Components: src/components/teaching/MyStudents.tsx

Purpose

Allow Creators to view and manage all students enrolled in their courses, track individual progress, and facilitate communication.


Connections

Incoming (users arrive from)

Source Trigger Notes
CDSH "View All Students" link From dashboard
STUD "Students" tab/link From Creator Studio
Nav "My Students" link Creator navigation

Outgoing (users navigate to)

Target Trigger Notes
PROF Student name click View student profile
MSGS "Message" button Contact student
CDET Course name click View course
CSES "View Sessions" on student row Session history with student
CDSH Back/breadcrumb Return to dashboard

Data Requirements

Entity Fields Used Purpose
enrollments id, student_id, course_id, status, enrolled_at, completed_at Enrollment records
users (students) id, name, avatar, email, handle Student info
courses id, title (where creator_id = current user) Course filter
module_progress enrollment_id, is_complete Progress calculation
sessions enrollment_id, status, scheduled_start Session counts
certificates user_id, course_id, type Completion status
student_teachers user_id, course_id If student became ST

Sections

Header

  • Page title: "My Students"
  • Total count: "X students across Y courses"
  • Export button (CSV)

Filters & Search

  • **Search:** By student name or email
  • **Course filter:** All courses / specific course
  • **Status filter:** All / Active / Completed / Cancelled
  • **Sort:** Name, Enrollment date, Progress, Last activity

Student List/Table

  • | Column | Content | |--------|---------| | Student | Avatar + name + handle | | Course | Course title | | Enrolled | Date enrolled | | Progress | Progress bar (% modules complete) | | Sessions | X completed / Y scheduled | | Status | Active / Completed / At Risk | | Actions | Message, View Sessions, View Profile |

Student Row Actions

  • **Message** → MSGS (pre-filled recipient)
  • **View Sessions** → CSES (filtered to this student)
  • **View Profile** → PROF
  • **Mark at Risk** (flag for follow-up)

Bulk Actions

  • Select multiple students
  • Bulk message
  • Export selected

Student Detail Panel (Slide-out or Modal)

  • Full student info
  • Course progress breakdown by module
  • Session history
  • Notes (creator's private notes on student)
  • Assigned ST info
  • Certificate status

User Stories Fulfilled

  • US-C039: View enrolled students
  • US-C040: Track student progress
  • US-C041: Contact students
  • US-C042: Export student data

States & Variations

State Description
Default All students, sorted by enrollment date
Filtered By course or status
Empty No students yet, "Share your courses" CTA
Detail Open Student detail panel visible

Mobile Considerations

  • Card-based list instead of table
  • Filters in collapsible drawer
  • Detail panel becomes full screen
  • Key actions (message) prominent

Error Handling

Error Display
Load fails "Unable to load students. [Retry]"
Export fails "Export failed. Try again."

Analytics Events

Event Trigger Data
`page_view` Page load student_count, filter_state
`student_viewed` Detail opened student_id, course_id
`student_messaged` Message clicked student_id
`export_requested` Export clicked count, format

Planned API Calls

Endpoint When Purpose
GET /api/creators/me/students/:id Detail open Student detail
GET /api/creators/me/courses Filter dropdown Course options
GET /api/enrollments/:id/progress Detail open Module progress
GET /api/enrollments/:id/sessions Detail open Session history
PUT /api/enrollments/:id/notes Save notes Creator's notes on student
POST /api/enrollments/:id/flag Flag student Mark at-risk
GET /api/creators/me/students/export Export CSV export

Notes

  • Consider "At Risk" auto-flagging based on inactivity
  • Privacy: Only show students enrolled in creator's courses
  • Could integrate with email campaigns (future)




Test Coverage

Component ✓ Page ○ SSR ○ API 2/2 ✓ Ready
Script: scripts/page-tests/test-CMST.sh
Page Test: tests/pages/dashboard/teaching/students.test.tsx
Component Test: tests/components/teaching/MyStudents.test.tsx

API Tests

Endpoint Test File Status
GET /api/me/st-students tests/api/me/st-students.test.ts ✓ tested
GET /api/me/st-analytics/students tests/api/me/st-analytics/students.test.ts ✓ tested