A comprehensive Learning Management System built with Node.js, Express, MongoDB, and Next.js featuring course management,Video and Image Storage in Cloudinary, and student learning portal.
Note: All videos used in this project are for educational purposes only.
- Course Management: Create, edit, publish, and archive courses
- Content Upload: Upload course thumbnails and videos via Cloudinary
- Section & Video Management: Organize content into sections with multiple videos
- Course Status Control: Draft → Published → Archived workflow
- Student Analytics: View enrolled students and course performance
- Confirmation Dialogs: Safety prompts for critical actions
- Course Catalog: Browse available courses with modern UI
- Smart Navigation: Automatic redirect based on enrollment status
- Payment Integration: Razorpay payment gateway for paid courses (Next Feature)
- Learning Interface: Video player with course progress tracking
- Enrollment Management: Seamless enrollment process
- Responsive Design: Mobile-friendly interface
- Razorpay Integration: Secure payment processing
- Test Mode Support: Complete testing with dummy credentials
- Payment Verification: Server-side signature validation
- Free Course Support: Instant enrollment for free courses
- Node.js with Express.js
- MongoDB with Mongoose ODM
- Cloudinary for media storage
- Razorpay for payment processing
- JWT for authentication
- Multer for file uploads
- Next.js 14 with TypeScript
- Tailwind CSS for styling
- React Hooks for state management
- Responsive Design principles
- Node.js (v18 or higher)
- MongoDB
- Cloudinary account
- Navigate to backend directory:
cd backend- Install dependencies:
npm install- Create
.envfile:
PORT=5000
MONGO_URI=mongodb://localhost:27017/LearningPlatform
JWT_SECRET=your_jwt_secret_key
# Cloudinary Configuration
CLOUDINARY_CLOUD_NAME=your_cloud_name
CLOUDINARY_API_KEY=your_api_key
CLOUDINARY_API_SECRET=your_api_secret
4. Start the server:
```bash
npm start- Navigate to admin dashboard:
cd admin-dashboard- Install dependencies:
npm install- Start development server:
npm run dev- Access at:
http://localhost:3000
- Navigate to student dashboard:
cd student-dashboard- Install dependencies:
npm install- Start development server:
npm run dev- Access at:
http://localhost:3001
POST /api/v1/admin/courses- Create courseGET /api/v1/admin/courses- Get all coursesPATCH /api/v1/admin/courses/:id/publish- Publish coursePATCH /api/v1/admin/courses/:id/archive- Archive coursePOST /api/v1/admin/courses/:id/sections- Add sectionPOST /api/v1/admin/sections/:id/videos- Add video
GET /api/v1/catalog/courses- Browse coursesPOST /api/v1/student/enroll- Enroll in courseGET /api/v1/student/enrollments- Get enrollmentsPOST /api/v1/student/payment/create-order- Create payment order
LearningPlatform/
├── backend/
│ ├── controllers/
│ ├── models/
│ ├── routes/
│ ├── middlewares/
│ └── config/
├── admin-dashboard/
│ ├── src/
│ │ ├── app/
│ │ ├── components/
│ │ └── utils/
└── student-dashboard/
├── src/
│ ├── app/
│ ├── components/
│ └── utils/
- Courses start as "archived" by default
- Admin can publish to make visible to students
- Published courses can be archived to hide
- Confirmation dialogs prevent accidental changes
- Non-logged users → Login page
- Free courses → Instant enrollment
- Paid courses → Payment gateway
- Already enrolled → Learning page
- JWT-based authentication
- Payment signature verification
- Input validation and sanitization
- CORS configuration
- Environment variable protection
- Fork the repository
- Create feature branch (
git checkout -b feature/AmazingFeature) - Commit changes (
git commit -m 'Add AmazingFeature') - Push to branch (
git push origin feature/AmazingFeature) - Open Pull Request
This project is for educational purposes only. All videos and content used are for demonstration and learning purposes.
For support and queries, please create an issue in the repository.
Educational Disclaimer: All video content and materials used in this project are for educational and demonstration purposes only. No commercial use is intended.