https://github.com/premshinde-2013/learning-management-system
Explore our robust LMS platform built with TypeScript, Node.js, Express.js, MongoDB, Redis, Next.js 13, RTK Query, and Socket.IO. Seamlessly manage learning activities with powerful features. Empower your educational endeavors with our full-stack solution for efficient, interactive learning experiences.
https://github.com/premshinde-2013/learning-management-system
expressjs material-ui mongodb nextjs nextui nodejs redis render-deployment rtk-query soket-io taiwindcss typescript upstash-redis vercel-deployment
Last synced: 2 months ago
JSON representation
Explore our robust LMS platform built with TypeScript, Node.js, Express.js, MongoDB, Redis, Next.js 13, RTK Query, and Socket.IO. Seamlessly manage learning activities with powerful features. Empower your educational endeavors with our full-stack solution for efficient, interactive learning experiences.
- Host: GitHub
- URL: https://github.com/premshinde-2013/learning-management-system
- Owner: PremShinde-2013
- Created: 2023-11-03T14:34:26.000Z (over 1 year ago)
- Default Branch: master
- Last Pushed: 2024-12-14T17:51:46.000Z (5 months ago)
- Last Synced: 2025-01-21T22:16:40.519Z (4 months ago)
- Topics: expressjs, material-ui, mongodb, nextjs, nextui, nodejs, redis, render-deployment, rtk-query, soket-io, taiwindcss, typescript, upstash-redis, vercel-deployment
- Language: TypeScript
- Homepage: https://learnifypro-lms.vercel.app
- Size: 4.38 MB
- Stars: 0
- Watchers: 1
- Forks: 1
- Open Issues: 0
-
Metadata Files:
- Readme: README.md
Awesome Lists containing this project
README
# LearnifyPro 🚀
Welcome to **LearnifyPro** - the ultimate Learning Management System (LMS) that empowers educators, students, and administrators to create, manage, and excel in the world of learning!
This project is built with modern technologies like **React**, **Node.js**, **MongoDB**, and **TypeScript** to deliver a robust and user-friendly LMS.
---
## 🚀 **Key Features**
- **Efficient Backend:** Powered by **Node.js** and **Express.js** for fast and scalable server-side operations.
- **Real-time Communication:** Seamless, live updates with **Socket.IO**.
- **Data Management:** Reliable storage with **MongoDB**.
- **Performance Boost:** Optimized with **Redis** caching mechanism for faster data retrieval.
- **Client-side Rendering:** Smooth, fast user experiences using **Next.js**.
- **Stylish UI:** Aesthetic and responsive UI enhanced by **Material-UI**, **Next UI**, and **Tailwind CSS**.
- **Effortless Deployment:** Frontend deployed on **Vercel** and backend on **Render** for easy management.
- Admin panel for course and user management.
- Payment integration with **Stripe**.
- Authentication and security using **Clerk** and JWT.---
## 🛠️ **Tech Stack**
| **Category** | **Technology** |
|---------------------|--------------------------------|
| Frontend | **Next.js**, **Tailwind CSS**, **Material-UI**, **Next UI** |
| Backend | **Node.js**, **Express.js** |
| Database | **MongoDB**, **Redis** |
| Real-time Features | **Socket.IO** |
| Authentication | **Clerk**, **JWT** |
| Payment Gateway | **Stripe** |
| Deployment | **Vercel** (Frontend), **Render** (Backend) |
| UI Components | **Shadcn-UI**, **Framer Motion** |---
## 🎯 **Project Setup**
Follow these steps to clone, install, and run LearnifyPro locally.
### 1️⃣ **Clone the Repository**
Open your terminal and run the following command:
```bash
# Clone the repository
git clone https://github.com/PremShinde-2013/Learning-Management-System.git# Move into the project directory
cd Learning-Management-System
```---
### 2️⃣ **Set Up the Server**
1. Navigate to the **server** folder:
```bash
cd server
```
2. Install the dependencies:
```bash
pnpm install
```
3. Create a `.env` file in the **server** directory with the following details:```dotenv
PORT = 8000
ORIGIN = ['http://localhost:3000']
NODE_ENV = developmentDB_URL = 'mongodb+srv://:@lms.iukma3o.mongodb.net/LMS'
CLOUD_NAME =
CLOUD_API_KEY =
CLOUD_SECRET_KEY =REDIS_URL = rediss://
ACTIVATION_SECRET =
ACCESS_TOKEN =
REFRESH_TOKEN =ACCESS_TOKEN_EXPIRE = 5
REFRESH_TOKEN_EXPIRE = 3SMTP_HOST= smtp.gmail.com
SMTP_SERVICE=gmail
SMTP_PORT=465
SMTP_MAIL=
SMTP_PASSWORD=VDOCIPHER_API_SECRET =
STRIPE_PUBLISHABLE_KEY =
STRIPE_SECRET_KEY =
```4. Run the server:
```bash
pnpm run dev
```
The server should now be running at `http://localhost:8000`.---
### 3️⃣ **Set Up the Client**
1. Open a new terminal and navigate to the **client** folder:
```bash
cd client
```
2. Install the dependencies:
```bash
pnpm install
```
3. Create a `.env` file in the **client** directory with the following details:```dotenv
NEXT_PUBLIC_SERVER_URI = "http://localhost:8000/api/v1"
NEXT_PUBLIC_SOCKET_SERVER_URI = "http://localhost:8000/"GOOGLE_CLIENT_ID =
GOOGLE_CLIENT_SECRET =GITHUB_CLIENT_ID =
GITHUB_CLIENT_SECRET =SECRET =
# Stripe Backup and Passkey (Optional)
# STRIPE_BACKUP =
# STRIPE_PASSKEY =
```4. Run the client:
```bash
pnpm run dev
```
The client should now be running at `http://localhost:3000`.---
### 4️⃣ **Access the Application**
- **Client**: `http://localhost:3000`
- **API**: `http://localhost:8000/api/v1`---
## 🌟 **Folder Structure**
Here's an overview of the project structure:
```plaintext
learnifypro/
│
├── client/ # Frontend code (Next.js)
│ ├── src/
│ ├── public/
│ ├── .env.example
│ └── ...
│
├── server/ # Backend code (Node.js + Express)
│ ├── src/
│ ├── .env.example
│ └── ...
│
├── README.md # Documentation
└── ...
```---
## 🧩 **Integrations**
LearnifyPro integrates seamlessly with popular services:- **Stripe**: Payment gateway for subscriptions.
- **Clerk**: Authentication and user management.
- **Socket.IO**: Real-time chat and notifications.
- **MongoDB**: NoSQL database for data management.
- **Cloudinary**: Media storage and optimization.---
## 🤝 **Contributing**
We welcome contributions to LearnifyPro! 🎉
To get started:
1. Fork the repository.
2. Create a new branch:
```bash
git checkout -b feature/your-feature-name
```
3. Make your changes and commit them:
```bash
git commit -m "Add your meaningful commit message"
```
4. Push to your fork and submit a Pull Request.---
## 📧 **Contact**
If you have questions, feel free to reach out:
- **Name**: Prem Shinde
- **Email**: [[email protected]](mailto:[email protected])
- **GitHub**: [PremShinde-2013](https://github.com/PremShinde-2013)
- **Portfolio**: [premshindedev.vercel.app](https://premshindedev.vercel.app/)---
**Happy Coding! 🎉🚀**
---