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() and getCategories()

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