A full-stack web application that converts YouTube playlists into structured learning courses with progress tracking, gamification, and a modern learning management system.
- Auto Course Generation: Parse YouTube playlists and extract video titles, durations, and thumbnails
- Video Player: Embedded YouTube video player with progress tracking
- Progress Tracking: Mark videos as completed and show percentage completion
- Streak System: Track daily learning streaks with badges and rewards
- Gamification: XP points, achievements, and leaderboards
- User Profiles: View course history, progress, streaks, and earned XP
- Authentication: Sign up/login with email and password
- Notes & Bookmarks: Add timestamped notes and bookmarks to videos
- Comments & Discussions: Comment system for each module
- Dark Mode: Toggle between light and dark themes
- Responsive Design: Mobile-first design with modern UI/UX
- Real-time Progress: Live progress updates and analytics
- Course Categories: Organize courses by subject and difficulty
- Social Features: Follow other learners and share courses
- Node.js with Express.js
- MongoDB with Mongoose ODM
- JWT for authentication
- YouTube Data API v3 for playlist extraction
- bcryptjs for password hashing
- Express Validator for input validation
- Helmet for security headers
- CORS for cross-origin requests
- React 18 with Vite
- React Router for navigation
- React Query for data fetching
- Tailwind CSS for styling
- Lucide React for icons
- React Hook Form for forms
- React Hot Toast for notifications
- Framer Motion for animations
- Node.js (v16 or higher)
- MongoDB (local or cloud)
- YouTube Data API key
-
Clone the repository
git clone <repository-url> cd PlayLMS
-
Install dependencies
npm install cd backend npm install -
Environment Configuration
cp backend/env.example backend/.env
Edit
backend/.envwith your configuration:PORT=5000 MONGODB_URI=mongodb://localhost:27017/playlms JWT_SECRET=your-super-secret-jwt-key YOUTUBE_API_KEY=your-youtube-api-key
-
Start the backend server
cd backend npm run dev
-
Install dependencies
cd frontend npm install -
Start the development server
npm run dev
-
Access the application
- Frontend: http://localhost:3000
- Backend API: http://localhost:5000
- Go to Google Cloud Console
- Create a new project or select existing one
- Enable YouTube Data API v3
- Create credentials (API Key)
- Add the API key to your
.envfile
- Install MongoDB locally or use MongoDB Atlas
- Create a database named
playlms - Update the
MONGODB_URIin your.envfile
POST /api/auth/register- User registrationPOST /api/auth/login- User loginGET /api/auth/me- Get current user profilePUT /api/auth/profile- Update user profilePOST /api/auth/logout- User logout
POST /api/courses/convert- Convert YouTube playlist to courseGET /api/courses- Get all courses with filteringGET /api/courses/:slug- Get course detailsPOST /api/courses/:courseId/enroll- Enroll in coursePOST /api/courses/:courseId/modules/:moduleOrder/complete- Complete module
GET /api/progress/:courseId- Get user progressPOST /api/progress/:courseId/modules/:moduleOrder/watch- Update watch progressPOST /api/progress/:courseId/modules/:moduleOrder/notes- Add notePOST /api/progress/:courseId/modules/:moduleOrder/bookmarks- Add bookmark
GET /api/gamification/dashboard- Get gamification dashboardGET /api/gamification/leaderboard- Get leaderboardGET /api/gamification/achievements- Get achievementsPOST /api/gamification/challenges/:challengeId/claim- Claim challenge reward
- Sign up or log in to your account
- Navigate to "Create Course"
- Paste a YouTube playlist URL
- Add course details (title, description, category)
- Click "Create Course"
- Browse available courses
- Enroll in a course
- Watch videos with progress tracking
- Add notes and bookmarks
- Complete modules to earn XP
- Track your progress and achievements
PlayLMS/
βββ backend/
β βββ models/ # Database models
β βββ routes/ # API routes
β βββ middleware/ # Custom middleware
β βββ services/ # Business logic
β βββ utils/ # Utility functions
βββ frontend/
β βββ src/
β β βββ components/ # Reusable components
β β βββ contexts/ # React contexts
β β βββ pages/ # Page components
β β βββ services/ # API services
β β βββ utils/ # Utility functions
β βββ public/ # Static assets
βββ README.md
- Connect your GitHub repository
- Set environment variables
- Deploy the backend directory
- Update frontend API URL
- Connect your GitHub repository
- Set build command:
npm run build - Set output directory:
dist - Deploy
- Fork the repository
- Create a feature branch
- Make your changes
- Add tests if applicable
- Submit a pull request
This project is licensed under the MIT License - see the LICENSE file for details.
- YouTube Data API for playlist extraction
- MongoDB for database
- React and Vite for frontend framework
- Tailwind CSS for styling
- Lucide for beautiful icons
For support, email mnraza94@gmail.com or create an issue in the repository.
PlayLMS - Transform your YouTube playlists into structured learning experiences! π