A full-stack online learning platform built as a 4th year PFA project. The platform allows users to learn through structured courses, quizzes, progress tracking, certificates, and live sessions with instructors.
The system introduces a dual-profile model where a single user account can operate as both a learner and an instructor. Users can switch between learner mode and instructor mode without creating separate accounts.
The main objective of this project is to design and develop a complete online training platform that supports digital learning, instructor-led course creation, live sessions, student progress tracking, and certification.
The platform aims to provide:
- A structured learning experience through courses, sections, and lessons
- A dual-profile system allowing users to act as learners and instructors
- Instructor tools for course management, quizzes, and live sessions
- Learner tools for enrollment, progress tracking, assessments, and certificates
- Admin tools for user management, instructor approval, and platform moderation
- A clean and maintainable architecture suitable for future scalability
Users can create an account, log in securely, and access the platform based on their roles and profiles.
Planned capabilities:
- User registration
- User login
- JWT-based authentication
- Password hashing
- Role-based access control
- User account status management
A single account can have multiple profiles.
A user can be:
- Learner only
- Learner and instructor
- Admin
The learner profile is used for learning activities such as enrollments, progress, quizzes, and certificates.
The instructor profile is used for teaching activities such as course creation, quiz management, live sessions, and student tracking.
Users can request to become instructors. An admin reviews and approves or rejects the instructor profile.
This ensures that only approved instructors can publish courses.
Approved instructors can create and manage courses.
A course includes:
- Title
- Description
- Category
- Level
- Thumbnail image
- Status: draft, published, archived
- Instructor information
Courses are organized into sections and lessons.
A lesson may include:
- Video content
- PDF files
- Text content
- External links
- Attached resources
Learners can enroll in published courses.
Enrollment allows learners to:
- Access course lessons
- Track learning progress
- Take quizzes
- Join live sessions
- Receive notifications
- Generate certificates after completion
The platform tracks learner progress for each course.
Tracked data includes:
- Completed lessons
- Course completion percentage
- Last accessed lesson
- Time spent learning
Instructors can create quizzes linked to courses or sections.
The quiz system supports:
- Multiple-choice questions
- True/false questions
- Automatic grading
- Score calculation
- Pass/fail status
- Attempt history
Learners can receive certificates after completing course requirements.
Certificate generation may depend on:
- Completing all required lessons
- Passing required quizzes
- Reaching the minimum completion percentage
Instructors can schedule live sessions linked to their courses.
The first version will use external meeting links or Jitsi integration instead of building video calls from scratch.
Live session features include:
- Scheduling
- Meeting link generation or storage
- Enrollment-based access
- Session status management
- Attendance tracking
The platform sends notifications for important events.
Examples:
- New lesson added
- Live session scheduled
- Quiz available
- Certificate generated
- Instructor replied to a question
- New student enrolled
Learners can ask questions under courses or lessons. Instructors can reply, moderate discussions, and mark helpful answers.
Learners can review and rate courses after enrollment or completion.
The platform provides dashboards for different profiles.
Learner dashboard:
- Enrolled courses
- Completed courses
- Progress percentage
- Upcoming live sessions
- Quiz results
- Certificates
- Notifications
Instructor dashboard:
- Created courses
- Number of enrolled students
- Course completion rate
- Upcoming live sessions
- Quiz results
- Recent student questions
Admin dashboard:
- Total users
- Pending instructor approvals
- Total courses
- Active learners
- Moderation actions
Learners can search and filter courses by:
- Keyword
- Category
- Level
- Instructor
- Rating
- Newest courses
- Most popular courses
The platform may recommend courses based on:
- Learner interests
- Enrolled course categories
- Popular courses
- Related learning paths
Admins can moderate platform content, including reviews, comments, courses, and user accounts.
The project follows a modular monolith architecture.
The backend is divided into business modules such as authentication, profiles, courses, enrollments, progress, quizzes, live sessions, notifications, certificates, reviews, discussions, and administration.
This approach keeps the application simple to deploy while maintaining clean separation between features.
- Java 17
- Spring Boot
- Spring Security
- JWT authentication
- Spring Data JPA
- PostgreSQL
- Maven
- Swagger / OpenAPI
- React
- TypeScript
- React Router
- Axios
- Tailwind CSS or CSS Modules
- PostgreSQL
- Jitsi Meet or external meeting links for live sessions
- Email provider, optional
- Local file storage first, cloud storage optional
online-training-platform/
│
├── backend/
│ └── Spring Boot application
│
├── frontend/
│ └── React application
│
├── docs/
│ ├── architecture/
│ ├── decisions/
│ └── diagrams/
│
├── .github/
│ ├── ISSUE_TEMPLATE/
│ └── PULL_REQUEST_TEMPLATE.md
│
├── README.md
├── CONTRIBUTING.md
└── CURRENT_STATE.md
- Repository setup
- Documentation setup
- Backend project initialization
- Frontend project initialization
- Database configuration
- Basic CI setup
- User registration
- Login with JWT
- Role management
- Learner profile creation
- Instructor profile request
- Admin instructor approval
- Profile switching
- Course CRUD
- Categories
- Sections
- Lessons
- Course publishing workflow
- File upload basics
- Course browsing
- Search and filtering
- Enrollment
- Lesson access
- Progress tracking
- Wishlist
- Quiz creation
- Quiz attempts
- Automatic grading
- Course completion logic
- Certificate generation
- Live session scheduling
- Jitsi or external meeting link integration
- Attendance tracking
- Notifications
- Discussion and Q&A
- Reviews and ratings
- Learner dashboard
- Instructor dashboard
- Admin dashboard
- Moderation tools
- Swagger documentation
- Testing
- UI polish
The backend (Spring Boot modular monolith) and frontend (React + TypeScript) are both actively in development, with most core learner and instructor workflows wired end-to-end: authentication, the dual-profile system, instructor course/content/quiz authoring, learner enrollment, lesson progress, quiz-taking with scoring/retake/attempt history, wishlist, profile self-editing, certificate issuance and viewing, and live sessions (implemented as a Jitsi-backed v1 — instructor scheduling and cancellation for owned courses, enrollment-gated learner visibility, access-controlled join, and idempotent attendance recording), and Cloudinary-backed media upload (v1 — learner profile image and instructor course thumbnail only; backend-authenticated, no direct/unsigned frontend uploads). Notifications, Q&A, reviews, recommendations, instructor profile image upload, lesson attachments, certificate PDF storage, recordings, and reminders remain planned (see the roadmap above) and are not yet implemented.
See CURRENT_STATE.md for the exact current milestone, module-by-module
backend/frontend status, and known gaps, and docs/report/ (start at
docs/report/README.md) for the full PFA report package — workflows, API
reference, use cases, test evidence, and known limitations.
This project is developed for academic purposes as part of a 4th year PFA.