This repository contains the source code and implementation of a Learning Management System (LMS) developed using the MERN stack (MongoDB, Express.js, React, Node.js) along with Tailwind CSS and DaisyUI for styling, Cloudinary for managing media, and Razorpay for subscription management.
The Learning Management System (LMS) is a web-based application that facilitates the management and delivery of educational content and training materials. It allows administrators to create courses, manage users, and track progress. Users can access courses, view content, and complete assessments. Additionally, it offers subscription management through Razorpay, allowing users to purchase and cancel subscriptions.
You can preview the project at Preview Link.
- User authentication and authorization
- Course creation, modification, and deletion
- Content upload and management using Cloudinary
- User enrollment in courses
- Course progress tracking
- Interactive user interface using React and Tailwind CSS
- Subscription management with Razorpay
Before running this project locally, ensure you have the following installed:
- Node.js (v14.x or higher)
- npm (v6.x or higher)
- MongoDB (v4.x or higher)
- Cloudinary account and API credentials
- Razorpay account and API credentials
-
Clone the repository to your local machine:
git clone https://github.com/Sukomal07/learning-management-system.git cd learning-management-system -
Install server dependencies:
cd server npm install -
Install client dependencies:
cd client npm install -
Set up environment variables: Create a
.envfile in theserverdirectory and add the following:PORT=5000 MONGO_URI=<your_mongoDB_URI> FRONTEND_URL=http://localhost:5173 JWT_SECRET=<set_JWT_secret> JWT_EXPIRE=<set_JWT_EXP> CLOUD_NAME=<your_cloudinary_name> API_KEY=<your_cloudinary_api_key> API_SECRET=<your_cloudinary_api_secret> GMAIL_ID=<mail_id_for_sending_mail> APP_PASSWORD=<set_app_password_in_gmail> RAZORPAY_API_KEY=<your_razorpay_api_key> RAZORPAY_PLAN_ID=<your_subscription_plan_id> RAZORPAY_KEY_SECRET=<your_razorpay_key_secret>
-
Start the server:
cd server npm run dev -
Start the client:
cd client npm run dev -
Access the application at http://localhost:5173
New accounts are created with the default USER role. To use the admin dashboard, create a user account first and then promote that account to ADMIN in MongoDB.
-
Sign up from the client at http://localhost:5173/signup.
-
Update the new user's role in MongoDB. The server connects to the
Lmsdatabase and stores users in theuserscollection.Using
mongosh:mongosh "<your_mongoDB_URI>" use Lms db.users.updateOne( { email: "admin@example.com" }, { $set: { role: "ADMIN" } } )
Replace
admin@example.comwith the email address used during signup. -
Log in with that account at http://localhost:5173/login.
-
Open the admin dashboard at http://localhost:5173/admin/dashboard. The navigation also shows an
Admin DashBoardlink after an admin user logs in.
- Users can purchase subscriptions for accessing premium content or features.
- Implement a subscription management interface that allows users to:
- View available subscription plans
- Select and purchase a subscription plan via Razorpay
- Cancel an existing subscription