Skip to content

engmaryamameen/LearnHub-LMS

Folders and files

NameName
Last commit message
Last commit date

Latest commit

Β 

History

155 Commits
Β 
Β 
Β 
Β 
Β 
Β 
Β 
Β 

Repository files navigation

πŸŽ“ LearnHub LMS

A Modern Learning Management System

React Node.js MongoDB Tailwind CSS Stripe

A comprehensive e-learning platform built with modern web technologies

πŸš€ Live Demo β€’ πŸ“– Documentation β€’ πŸ› Report Bug β€’ πŸ’‘ Request Feature


✨ Overview

LearnHub LMS is a full-stack learning management system that revolutionizes online education. It provides educators with powerful tools to create and manage courses, while offering students an engaging learning experience with progress tracking, video streaming, and interactive features.

🌟 Key Features

  • 🎯 Course Management - Create, edit, and manage comprehensive courses
  • πŸ‘₯ User Authentication - Secure login with Supabase integration
  • πŸ“Ή Video Streaming - YouTube playlist integration for course content
  • πŸ“Š Progress Tracking - Monitor student progress and completion rates
  • πŸ’³ Payment Processing - Secure payments via Stripe integration
  • πŸ“± Responsive Design - Optimized for all devices and screen sizes
  • 🎨 Modern UI/UX - Beautiful interface with smooth animations
  • πŸ“ˆ Analytics Dashboard - Comprehensive insights for educators

πŸ› οΈ Tech Stack

Frontend

Technology Purpose
React UI Framework
Vite Build Tool
Tailwind CSS Styling
Framer Motion Animations
Axios HTTP Client

Backend

Technology Purpose
Node.js Runtime Environment
Express.js Web Framework
MongoDB Database
Mongoose ODM

Services

Service Purpose
Supabase Authentication
Stripe Payment Processing
Cloudinary Media Storage

πŸ“ Project Structure

πŸ“¦ LearnHub-LMS
β”œβ”€β”€ πŸ“‚ client/                 # Frontend React Application
β”‚   β”œβ”€β”€ πŸ“‚ src/
β”‚   β”‚   β”œβ”€β”€ πŸ“‚ components/     # Reusable UI Components
β”‚   β”‚   β”‚   β”œβ”€β”€ πŸ“‚ educator/   # Educator-specific components
β”‚   β”‚   β”‚   └── πŸ“‚ student/    # Student-specific components
β”‚   β”‚   β”œβ”€β”€ πŸ“‚ pages/          # Page Components
β”‚   β”‚   β”‚   β”œβ”€β”€ πŸ“‚ educator/   # Educator pages
β”‚   β”‚   β”‚   └── πŸ“‚ student/    # Student pages
β”‚   β”‚   β”œβ”€β”€ πŸ“‚ context/        # React Context Providers
β”‚   β”‚   β”œβ”€β”€ πŸ“‚ assets/         # Static assets
β”‚   β”‚   └── πŸ“‚ config/         # Configuration files
β”‚   β”œβ”€β”€ πŸ“œ package.json
β”‚   └── πŸ“œ vite.config.js
β”‚
β”œβ”€β”€ πŸ“‚ server/                 # Backend Node.js Application
β”‚   β”œβ”€β”€ πŸ“‚ controllers/        # Route controllers
β”‚   β”œβ”€β”€ πŸ“‚ models/             # Database models
β”‚   β”œβ”€β”€ πŸ“‚ routes/             # API routes
β”‚   β”œβ”€β”€ πŸ“‚ middlewares/        # Custom middlewares
β”‚   β”œβ”€β”€ πŸ“‚ configs/            # Configuration files
β”‚   └── πŸ“œ server.js
β”‚
└── πŸ“œ README.md

πŸš€ Quick Start

Prerequisites

  • Node.js (v16 or higher)
  • MongoDB
  • Supabase account
  • Stripe account
  • Cloudinary account

Installation

  1. Clone the repository

    git clone https://github.com/engmaryamameen/LearnHub-LMS.git
    cd LearnHub-LMS
  2. Install dependencies

    # Install frontend dependencies
    cd client
    npm install
    
    # Install backend dependencies
    cd ../server
    npm install
  3. Environment Setup

    Create .env files in both client/ and server/ directories:

    Frontend (.env)

    VITE_BACKEND_URL=http://localhost:3000
    VITE_SUPABASE_URL=your_supabase_url
    VITE_SUPABASE_ANON_KEY=your_supabase_anon_key

    Backend (.env)

    PORT=3000
    MONGODB_URI=your_mongodb_connection_string
    SUPABASE_URL=your_supabase_url
    SUPABASE_KEY=your_supabase_service_key
    STRIPE_SECRET_KEY=your_stripe_secret_key
    CLOUDINARY_CLOUD_NAME=your_cloudinary_cloud_name
    CLOUDINARY_API_KEY=your_cloudinary_api_key
    CLOUDINARY_API_SECRET=your_cloudinary_api_secret
  4. Run the application

    # Start backend server
    cd server
    npm start
    
    # Start frontend development server
    cd ../client
    npm run dev
  5. Access the application


🎯 Features in Detail

πŸ‘¨β€πŸ« For Educators

  • Course Creation: Create comprehensive courses with chapters and lectures
  • Content Management: Upload course thumbnails and organize content
  • Student Analytics: Track enrollment, progress, and engagement
  • Revenue Tracking: Monitor earnings and payment status
  • YouTube Integration: Add playlist links for additional content

πŸ‘¨β€πŸŽ“ For Students

  • Course Discovery: Browse and search available courses
  • Enrollment System: Easy course enrollment with secure payments
  • Progress Tracking: Monitor learning progress and completion
  • Video Learning: Stream course content with embedded players
  • Personal Dashboard: View enrolled courses and achievements

πŸ”§ Technical Features

  • Real-time Updates: Live progress tracking and notifications
  • Secure Authentication: JWT-based authentication with Supabase
  • Payment Processing: Secure payment handling with Stripe
  • File Management: Cloud storage for course materials
  • Responsive Design: Optimized for desktop, tablet, and mobile

πŸ“Έ Screenshots

🏠 Home Page

Home Page

πŸ” Search Functionality

Search

πŸ“š Course Details

Course Details

πŸŽ“ Student Enrolled Courses

Student Enrolled Courses

πŸ‘¨β€πŸ« Educator Dashboard

Educator Dashboard

πŸ“ Educator Course List

Educator Course List

πŸ“ Sign Up Page

Sign Up

🦢 Footer

Footer


πŸ”§ API Endpoints

Authentication

  • POST /api/user/register - User registration
  • POST /api/user/login - User login
  • GET /api/user/profile - Get user profile

Courses

  • GET /api/course/all - Get all courses
  • GET /api/course/:id - Get course details
  • POST /api/course/add - Add new course (Educator only)
  • PUT /api/course/:id - Update course (Educator only)

User Management

  • GET /api/user/enrolled-courses - Get user's enrolled courses
  • POST /api/user/purchase-course - Purchase a course
  • POST /api/user/update-course-progress - Update course progress

Educator Features

  • GET /api/educator/courses - Get educator's courses
  • GET /api/educator/dashboard - Get dashboard data
  • GET /api/educator/enrolled-students - Get enrolled students

πŸš€ Deployment

Frontend Deployment (Vercel)

cd client
vercel --prod

Backend Deployment (Vercel)

cd server
vercel --prod

Environment Variables

Make sure to set all required environment variables in your deployment platform.


🀝 Contributing

We welcome contributions! Please follow these steps:

  1. Fork the repository
  2. Create a feature branch (git checkout -b feature/AmazingFeature)
  3. Commit your changes (git commit -m 'Add some AmazingFeature')
  4. Push to the branch (git push origin feature/AmazingFeature)
  5. Open a Pull Request

Development Guidelines

  • Follow the existing code style
  • Add comments for complex logic
  • Test your changes thoroughly
  • Update documentation if needed

πŸ“ License

This project is licensed under the MIT License - see the LICENSE file for details.


Acknowledgments



⭐ Support

Give a ⭐ if you like this project!

Made with ❀️ by Maryam Ameen for Developer Comunity

GitHub stars GitHub forks GitHub issues