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). The project leverages Tailwind CSS and DaisyUI for styling, providing a modern and responsive user interface. Media management is handled through Cloudinary, enabling seamless upload and retrieval of content. Additionally, Razorpay is integrated for subscription management, allowing users to access premium features through a secure and efficient payment gateway.This application also supports Progressive Web App (PWA) functionality, allowing users to install it on their desktop or mobile devices as a standalone app. This ensures a seamless experience with offline capabilities and quick access directly from the home screen.
You can access the live project here: Coursify Live
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. This application also supports Progressive Web App (PWA) functionality, allowing users to install it on their desktop or mobile devices as a standalone app. This ensures a seamless experience with offline capabilities and quick access directly from the home screen.
The project utilizes the following technologies:
Frontend:
Backend:
Database:
Authentication:
Media Management:
Payment Integration:
Email Service:
DevOps:
Each technology is carefully chosen to ensure a seamless and efficient user experience while maintaining scalability and security.
User Authentication: Secure user registration and login functionality using JWT-based authentication.
Course Management:
User Roles: Role-based access control for administrators and students.
Responsive Design: Fully responsive UI built with Tailwind CSS and DaisyUI for seamless usage across devices.
Media Management: Integration with Cloudinary for efficient media upload, storage, and retrieval.
Subscription Plans:
Contact Us: Built-in contact form for user queries, integrated with SMTP for email delivery.
Progressive Web App (PWA):
Before running this project locally, ensure you have the following :
Clone the project
https://github.com/amanhaidry/Coursify.git
cd Client
npm install
npm run dev
cd Server
npm install
.env
file in the server
directory and add the following: PORT = <Port number >
MONGODB_URL=<Connection_LINK>
JWT_SECRET = <YOUR_LONG_JWT_SECRET>
JWT_EXPIRY = <JWT_EXPIRY>
FRONTEND_URL = <YOUR_FRONTEND_WEBSITE_URL>
CONTACT_US_EMAIL = <YOUR_CONTACT_US_EMAIL>
CLOUDINARY_CLOUD_NAME = <YOUR_CLOUDINARY_CLOUD_NAME>
CLOUDINARY_API_KEY = <YOUR_CLOUDINARY_API_KEY>
CLOUDINARY_API_SECRET = <YOUR_CLOUDINARY_API_SECRET>
SMTP_HOST = <YOUR_SMTP_HOST>
SMTP_PORT = <YOUR_SMTP_POST>
SMTP_USERNAME = <YOUR_SMTP_USERNAME>
SMTP_PASSWORD = <YOUR_SMTP_PASSWORD>
SMTP_FROM_EMAIL = <YOUR_SMTP_FROM_EMAIL>
RAZORPAY_KEY_ID = <YOUR_RAZORPAY_KEY>
RAZORPAY_SECRET = <YOUR_RAZORPAY_SECRET>
RAZORPAY_PLAN_ID = <YOUR_RAZORPAY_PLAN_ID>
CORS Configuration in Backend (app.js):
cors
middleware to set the allowed origin(s) in the backend.const cors = require('cors');
app.use(cors({ origin: 'http://your-frontend-url.com' }));
Backend URL in Frontend (Axios):
const axiosInstance = axios.create({
baseURL: 'http://your-backend-url.com/api',
});
MongoDB IP Whitelisting:
0.0.0.0/0
for all IPs (not recommended for production).npm run dev
This project is organized into multiple repositories and branches to facilitate local development and deployment across different platforms:
coursify-onrender
branch. This branch is specifically configured for deployment on Render. It includes the necessary server-side files and configurations for hosting the backend.coursify-static-onrender
branch. This branch is configured to deploy the frontend as a static site on Render. It includes optimized build files and deployment-specific settings.coursify-pwa
branch. This branch includes additional configurations and files required to enable PWA functionality, such as service workers and a manifest file.Each branch is tailored to its specific purpose, ensuring a streamlined workflow for development, deployment, and PWA support.
Happy Coding...