Skip to main content

Overview

The learning experience is the core of SkillRise’s student platform. The player page (/player/{courseId}) combines a full-featured video player, organized chapter navigation, real-time progress tracking, and integrated quizzes into a seamless learning environment.

Player Page Layout

The player uses a responsive two-column layout: Left Column (Video & Controls)
  • Custom video player with full controls
  • Current lecture information card
  • Mark complete button
  • Course rating widget
Right Column (Navigation)
  • Progress bar with percentage
  • Certificate button (when complete)
  • Collapsible chapter list
  • Quiz buttons per chapter
On mobile, the layout stacks vertically with the video player taking full width.

Video Player Component

SkillRise features a custom-built video player with professional controls:

Player Features

Playback Controls

  • Play/Pause toggle
  • 10-second skip forward/backward
  • Seek bar with progress indicator
  • Keyboard shortcuts (Space, Arrow keys)

Audio Controls

  • Mute/unmute toggle
  • Volume slider (0-100%)
  • Visual volume level indicator
  • Persists across lectures

Speed Control

  • 0.5× to 2× playback speeds
  • 6 preset options
  • Dropdown selector
  • Smooth speed transitions

Display Options

  • Fullscreen mode
  • Quality selector (Auto, 1080p, 720p, 480p, 360p, 240p)
  • Auto-hide controls when playing
  • Responsive aspect ratio

Custom Controls Implementation

The player uses ReactPlayer as the video engine but implements custom controls:

Keyboard Shortcuts

Play/Pause ToggleQuick start/stop without mouse interaction

Skip Hint Overlay

When using keyboard shortcuts, a visual hint appears:

Lecture Selection

Chapter Structure Display

Courses are organized into chapters, each containing multiple lectures:

Chapter Accordion

The sidebar displays collapsible chapters:
  • Chapter header - Click to expand/collapse
  • Lecture count - Number of lessons in chapter
  • Chevron icon - Rotates when expanded
  • Lecture list - Shows when chapter is open

Lecture Items

Each lecture in the list shows:
1

Completion Icon

  • ✓ Green checkmark if completed
  • ▶ Play icon if not completed
2

Lecture Title

Truncated with ellipsis if too long
3

Duration

Formatted as “Xh Ym” or “Xm”
4

Active State

Currently playing lecture has teal background

Auto-selection Logic

When opening a course, the player intelligently selects a lecture:

Progress Tracking

Progress Bar

The top of the sidebar shows overall course progress: Displays:
  • “Your progress” label - Section header
  • Percentage - Bold, teal number (e.g., “67%”)
  • Progress bar - Visual indicator with smooth animation
  • Lecture count - “12 of 18 lectures completed”
Progress calculation:

Mark Complete Button

Below the video player, a card shows the current lecture with a completion button: Button States:
Primary teal button, enabled

Progress API Call

Marking a lecture complete triggers:
When the last lecture is completed:
  • Success toast: “Course completed. Certificate ready.”
  • Certificate button appears in sidebar
  • Progress bar animates to 100%

Quiz Integration

Chapter Quiz Unlock

Quiz buttons appear when all lectures in a chapter are marked complete:

Quiz Button Display

Button variations:

Quiz Result Badges

After taking a quiz, a colored badge shows the result:

Mastered

76-100%Green badge: ”🏆 Mastered”

On Track

41-75%Yellow badge: ”🎯 On Track”

Needs Review

0-40%Red badge: ”📖 Needs Review”

Rating System

Below the lecture controls, students can rate the course:

Rating Widget

Features:
  • 5 interactive stars - Click to rate 1-5
  • Hover preview - Stars light up on hover
  • Current rating - Pre-filled if user already rated
  • Instant update - Saves on click

Rating Persistence

Users can change their rating at any time.

Certificate Generation

Certificate Button

When course is 100% complete, a certificate card appears:

Certificate Download Flow

1

Request Certificate

2

Backend Generation

  • Verifies 100% completion
  • Generates PDF with student name, course title, date
  • Uploads to cloud storage
  • Returns PDF URL
3

Open in New Tab

Certificates are generated on-demand and cached. First request may take 2-3 seconds while the PDF is created.

Persistence Features

Last Played Lecture

The player remembers where you left off:
Benefits:
  • Resume exactly where you stopped
  • Works across browser sessions
  • Chapter auto-expands to show current lecture

Video Playback Position

ReactPlayer maintains playback position during:
  • Speed changes
  • Quality adjustments
  • Fullscreen toggles
  • Volume modifications

Mobile Experience

Responsive Layout

Two columns side-by-side
  • Video player: 60% width
  • Sidebar: 40% width (sticky)

Touch Optimizations

  • Large touch targets - All buttons 44px+ height
  • Swipe gestures - Disabled to prevent conflicts
  • Auto-hide controls - 2.5 second delay
  • Tap to show controls - Single tap reveals interface

Performance Optimizations

Video player only initializes when component mounts. ReactPlayer handles lazy loading of video source.
Progress percentages and completion states are memoized to prevent recalculation on every render.
Progress bar only updates every 100ms during playback to reduce re-renders.
Mark complete button updates UI immediately, API call happens in background.

Accessibility Features

Keyboard navigation for all video controls
ARIA labels on interactive elements
Focus management for modal dialogs
Screen reader announcements for state changes
Sufficient color contrast (WCAG AA compliant)