Skip to content

Ali-Adel-Nour/LMS

Folders and files

NameName
Last commit message
Last commit date

Latest commit

 
 
 
 
 
 
 

Repository files navigation

Learning Management System (LMS)

Welcome to the Learning Management System (LMS) repository! This project is inspired by leading e-learning platforms like Udemy and Coursera. It is designed to provide a comprehensive backend solution for managing courses, users, tutorials, blogs, and much more.


🌟 Features

1. 👤 User Management

  • Registration & Authentication: Secure user registration and login.
  • Role-Based Access Control: Administrator, instructor, and student roles.
  • Account Actions:
    • Password reset and password hint generation.
    • User blocking/unblocking with detailed logging.

2. 📚 Course Management

  • Course Creation: Instructors can create, edit, and delete courses.
  • Categories: Assign courses to categories for streamlined organization.
  • Lesson Management: Add lessons to courses with support for pagination.

3.🎓 Tutorials

  • Tutorials by Category: Fetch tutorials based on categories.
  • CRUD Operations: Create, update, and delete tutorial content.

4. 📝 Blogs

  • Blog Management:
    • Post, edit, and delete blogs.
    • Assign blogs to categories and manage thumbnails or videos.

5. 📄 Documentation

  • Documentation Management:
    • Add, update, and delete documentation.
    • Fetch documentation by categories or single entries.

6. 🌟 Reviews & Ratings

  • Review System:
    • Users can leave reviews and ratings for courses.
    • Fetch all reviews with pagination support.

7. 📬 Contact Management

  • Contact Forms:
    • Submit and manage contact forms.
    • Retrieve and update contact submissions.

8. 🛡️ Middleware

  • Security:
    • Input sanitization (XSS protection, HTTP Parameter Pollution prevention).
    • CORS configuration and helmet integration.
  • Logging:
    • Request and response logging with timestamps.
  • API Versioning:
    • URL and header-based versioning support.

Some of API Endpoints Examples

User Routes

  • POST /api/v1/user/register: Register a new user.
  • POST /api/v1/user/login: Authenticate and log in a user.
  • GET /api/v1/user/all: Fetch all users with pagination.

Course Routes

  • GET /api/v1/course/all: Get all courses.
  • POST /api/v1/course: Create a new course.
  • DELETE /api/v1/course/:id: Delete a course by ID.

Tutorial Routes

  • GET /api/v1/tutorial/category: Fetch tutorials by category.
  • GET /api/v1/tutorial/:slug: Get a specific tutorial.

Blog Routes

  • POST /api/v1/blog: Create a blog.
  • GET /api/v1/blog/all: Get all blogs.
  • DELETE /api/v1/blog/:id: Delete a blog.

Documentation Routes

  • POST /api/v1/documentation: Add documentation.
  • GET /api/v1/documentation/all: Fetch all documentation.
  • DELETE /api/v1/documentation/:id: Delete documentation.

Review Routes

  • POST /api/v1/review: Add a review.
  • GET /api/v1/review/all: Fetch all reviews.
  • DELETE /api/v1/review/:id: Delete a review.

Contact Routes

  • POST /api/v1/contact: Submit a contact form.
  • GET /api/v1/contact/all: Fetch all contact submissions.

Tech Stack

  • Programming Language: JavaScript (99.7%)
  • Infrastructure: Docker (0.3%)
  • Frameworks & Libraries:
    • Express.js for backend services.
    • MongoDB for database management.
    • Redis for caching.

Installation

  1. Clone the repository:
    git clone https://github.com/Ali-Adel-Nour/LMS.git
    
  2. Navigate to the project directory:
   cd LMS
  1. Install dependencies:
npm install
  1. Set up environment variables: Create a .env file in the root directory. Add the necessary configurations (e.g., MongoDB URI, JWT secrets,Redis).

Contribution

We welcome contributions! Please follow the contribution guidelines to get started.

Future Enhancements

  • Video Integration: Add support for video tutorials.
  • Payments Gateaway
  • More Features

About

Learning Management System(Udemy - Coursera)

Topics

Resources

Stars

Watchers

Forks

Releases

No releases published

Sponsor this project

 

Packages

No packages published