A full-stack Learning Management System (LMS) built with Node.js, Express, MongoDB, React, and Cloudinary for video hosting.
- User authentication (student & educator roles)
- Educator: Create, publish, and manage courses, chapters, lectures
- Student: Enroll in/purchase courses, track progress, rate courses
- Video upload and streaming via Cloudinary
- RESTful API with JWT authentication
- Course ratings and reviews
- Progress tracking per course
- Backend: Node.js, Express, MongoDB, Mongoose
- Frontend: React (see
/client) - Media: Cloudinary (video hosting)
- Auth: JWT, bcrypt
git clone https://github.com/gourabofficial/Advanced-LMS.git
cd Advanced-LMScd server
npm installCreate a .env file in /server:
MONGODB_URI=your_mongodb_uri
PORT=3000
JWT_TOKEN=your_jwt_secret
CLOUDINARY_NAME=your_cloudinary_name
CLOUDINARY_API_KEY=your_cloudinary_api_key
CLOUDINARY_SECRET_KEY=your_cloudinary_secret
npm startcd ../client
npm install
npm run devPOST /api/auth/register— Register userPOST /api/auth/login— Login userPOST /api/auth/logout— Logout user
GET /api/user/profile— Get user profilePOST /api/user/enroll/:courseId— Enroll in coursePOST /api/user/purchase/:courseId— Purchase coursePUT /api/user/progress/:courseId— Update course progressGET /api/user/progress/:courseId— Get course progressPOST /api/user/rating/:courseId— Rate a course
GET /api/course/all— List all published coursesPOST /api/course/create— Create course (educator)DELETE /api/course/:courseId— Delete course (educator)GET /api/course/my-courses— Educator's coursesPATCH /api/course/:courseId/toggle-publish— Publish/unpublish coursePOST /api/course/enroll/:courseId— Enroll in course (student)
GET /api/chapter/course/:courseId— List chapters for a coursePOST /api/chapter/create/:courseId— Create chapter (educator)DELETE /api/chapter/:chapterId— Delete chapter (educator)
GET /api/lecture/chapter/:chapterId— List lectures for a chapterPOST /api/lecture/create/:courseId/:chapterId— Create lecture (educator)DELETE /api/lecture/:lectureId— Delete lecture (educator)
POST /api/video/upload— Upload video (educator)
- Videos are uploaded to Cloudinary via
/api/video/upload(max size configurable in multer config) - Use the returned
videoUrlwhen creating a lecture
MIT