Student Portal
Last updated on 2026-09-13
The student portal is the largest section of the LMS with 23 routes. It includes course browsing, learning tools, gamification, community features, and personal management.
Dashboard (/dashboard)
The student dashboard shows:
- Welcome banner with streak count
- KPI stat cards (enrolled courses, completed, XP, streak)
- Continue Learning section with enrolled courses and progress bars
- Upcoming deadlines (assignments, quizzes, live sessions)
- Recent achievements (badges earned)
- Recommended courses
All data comes from Supabase via getStudentDashboardStats(), getEnrollments(), getUserBadges(), and getUserXp().
Course Catalog (/courses)
- Browse all published courses with search, category filters, and level filters
- Course cards show thumbnail, title, instructor, rating, price, and student count
- Server-side fetching via
getPublishedCourses()andgetCategories()
Course Detail (/courses/[slug])
- Full course information with modules and lesson list
- Instructor profile card
- Course reviews with ratings
- Enrollment button (or "Continue Learning" if already enrolled)
- Wishlist/bookmark toggle
- Supports both slug and UUID in the URL
Data from getCourseBySlug(), getCourseReviews(), getModules(), getEnrollments(), and getBookmarks().
Lesson Player (/lessons/[id])
- Video player or text content display
- Lesson sidebar with module navigation
- Mark lesson as complete via
completeLesson() - Notes panel for the current lesson
- Progress tracking
Quizzes (/quiz/[id], /quiz/[id]/results)
- Quiz page with JSONB questions displayed one at a time
- Timer countdown based on
time_limit - Submit answers via
submitQuizAttempt() - Results page showing score, percentage, pass/fail, and per-question breakdown
Assignments (/assignments)
- List of assignments across enrolled courses
- Submit assignments with content and file uploads via
submitAssignment() - View grade and feedback after instructor grading
My Learning (/my-learning)
- All enrolled courses with progress bars
- Filter by status (active, completed)
- Continue where you left off
Progress (/progress)
- Overall learning statistics
- XP and level progress
- Streak tracking
- Certificate count
- Enrollment timeline
Achievements (/achievements)
- Badge grid showing all available badges
- Earned badges highlighted with earned date
- Rarity indicators (common, rare, epic, legendary)
- Badge categories (streak, completion, quiz, community, special)
Certificates (/certificates)
- List of earned certificates with course name and issue date
- Unique credential IDs for verification
- Skills validated on each certificate
Leaderboard (/leaderboard)
- XP-based ranking of all students
- Current user highlighted
- Level and XP display
Community Features
Discussions (/discussions, /discussions/[id])
- Forum-style threads with categories
- Create threads, post replies
- Upvoting and marking answers as accepted
- Thread detail with nested replies
Live Sessions (/live-sessions)
- Upcoming and past live sessions
- Register for sessions via
registerForSession() - Instructor info and agenda
Study Groups (/study-groups)
- Browse and join public study groups
- Create new groups
- Member management
Messages (/messages)
- Direct messaging between users
- Inbox and sent folders
- Contact picker with real users from profiles table
- Read/unread status tracking
Personal Tools
Bookmarks (/bookmarks)
- Saved courses and lessons
- Add/remove via
addBookmark()/removeBookmark()
Notes (/notes)
- Personal study notes linked to lessons
- Pin important notes
- CRUD operations
Calendar (/calendar)
- Upcoming assignments, quizzes, and live sessions
- Calendar grid view
Notifications (/notifications)
- All notification types (course, achievement, community, system)
- Mark as read individually or all at once
- Dynamic unread count in navigation badge
Billing (/billing)
- Payment history with billing records
- Payment methods management
- Add new payment methods via
addPaymentMethod()
Profile & Settings (/profile, /settings)
- Edit profile information (name, bio, avatar, social links)
- Account settings
- Profile picture change