Skip to content

Haideron-LMS — A scalable OBE LMS built with Node.js, TypeScript, PostgreSQL (Drizzle ORM), and Redis.

License

Notifications You must be signed in to change notification settings

haider-sama/Haideron-LMS

Folders and files

NameName
Last commit message
Last commit date

Latest commit

 

History

52 Commits
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 

Repository files navigation

Banner

Haideron-LMS

i thought of working on the OBE problem for my uni, tried to push through it, but let’s just say any future addition is abandoned and the project’s stuck at a stalemate forever.

A scalable, modern outcome-based Learning Management System (LMS) built for institutions that value performance, reliability, and ease of use. Designed with Node.js, TypeScript, PostgreSQL (via Drizzle ORM), and Redis (for the social layer)


If you find this project helpful, consider giving it a star on GitHub — it motivates me to keep improving!

🎥 Demo: Watch the demo here: https://youtu.be/Gh8xX-oWxnM


📑 Table of Contents


✨ Features

🔑 Authentication & Security

  • 🔒 Custom JWT-Auth System with refresh & access tokens
  • ⏱️ 15-minute access tokens (auto-refresh every 10 minutes) for a seamless experience
  • 🧑‍⚖️ Strict Role-Based Access Control (RBAC)
  • 🚦 Rate Limiting & Input Sanitization for security
  • 📝 Audit Logs – all critical academic actions logged for compliance
  • 🔑 Google Login for quick sign-in
  • 🧩 Advanced Registration/Login System
    • Reset password flow
    • Email migration (if allowed by admin)
    • Session logout management
    • Dark Mode (academic layer only – social layer coming soon)

📚 Core Academic Management

  • 🎓 Program Management – create & manage degree programs
  • 📑 Catalogue Management – share course catalogues across multiple batches
    • Catalogue templates act as blueprints for semester creation
    • Easily reuse the same courses across multiple semesters
  • 📖 Course & Course Offering Management
    • Handle pre-requisite & co-requisite requirements
    • Support multiple sections per course
    • Assign course instructors seamlessly
  • 🗓️ Semester Management
    • One-click semester activation & deactivation
    • Auto-fetch relevant data for the active semester
    • Built-in deadline handling for smooth academic operations
  • 👥 Batch Management – create/edit/delete batches (e.g., 2022-CS), auto-enroll students
  • 👩‍🏫 Faculty Management – add/edit/remove faculty (by department heads)

🎓 Outcomes & Mapping

  • 🏆 PEOs, PLOs, CLOs – manage program, learning & course outcomes
  • 🛠️ Mapping Tools – robust PEO↔PLO & PLO↔CLO mapping for accreditation readiness

👩‍🏫 Teacher Dashboard

  • 📥 Auto-fetch assigned courses for the active semester
  • 🗓️ Attendance Management – create date-specific attendance, reuse across sections
  • 📝 Assessment Management – create, mark & grade assessments
  • 📊 Custom Grading Schemes per course offering
  • Result Finalization – submit results to department heads for approval

👨‍🎓 Student Dashboard

  • 📌 Automatically shows enrolled courses for the active semester
  • 🎯 One-click section enrollment
  • 👀 Simple & clean interface for attendance & grade visibility
  • 📄 Academic Transcript
    • Handles repeated/failed course scenarios automatically
    • Generates a clean, accurate transcript view

🌐 Social Layer (Community - Not available after stable-v1.0.0)

  • 💬 Forums, posts, comments with likes/upvotes/downvotes
  • 🖼️ Multiple post formats (text, media, etc.)
  • 🔄 Infinite Scrolling + Pagination (Reddit/Instagram style)
  • 📱 Clean, mobile-friendly UX
  • Backed by Redis for blazing-fast performance

⚙️ Admin Features

  • 🛠️ Admin Panel – configure system settings with ease
  • 👤 User Management – bulk user creation, password reset, avatar changes, user deletion
  • 📜 Logging System – track & audit critical operations
  • 🧠 Minimal Training Required – optimized for usability by non-technical staff

🛠️ Installation & Setup

# Clone the repo
git clone https://github.com/haider-sama/Haideron-LMS.git

# Install dependencies
cd Haideron-LMS
cd client/
npm install
cd server/
npm install

# Configure environment variables
cp .env.example .env
# Edit .env with DB credentials, JWT secrets, etc.

# Run migrations
cd server/
npm run db:migrate
npm run db:push

# Start development server
cd client/
npm run dev
cd server/
npm run dev

# 🗄️ 1. Setup PostgreSQL on Supabase
# - Go to https://supabase.com/ → Create a free project
# - Copy the database connection string from:
#   Settings → Database → Connection Info → URI
# - Add it to your .env file as:
# DATABASE_URL=postgres://username:password@db.supabase.co:5432/postgres


# 📧 3. Configure Nodemailer for Email
# Add these to your .env file:
# SMTP_HOST=smtp.yourprovider.com
# SMTP_PORT=587
# SMTP_USER=your-username
# SMTP_PASS=your-password
# SMTP_FROM="Haideron-LMS <no-reply@yourdomain.com>"

# ⚡ 4. Enable Redis (Optional – Social Layer)
# Start Redis locally (or use a managed service)
docker run -d -p 6379:6379 redis

# Add to your .env:
# REDIS_URL=redis://localhost:6379

🤝 Contributing

We ❤️ contributions from developers!

  • Fork the repository
  • Create a new branch (git checkout -b feature/your-feature-name)
  • Commit your changes (git commit -m "Add feature: your feature name")
  • Push to your branch (git push origin feature/your-feature-name)
  • Open a Pull Request and describe your changes

💡 Pro Tip: Check open issues or create a new one before starting to avoid duplicate work.


📄 License

  • This project is licensed under the AGPL-3.0 license.

📜 See LICENSE.

About

Haideron-LMS — A scalable OBE LMS built with Node.js, TypeScript, PostgreSQL (Drizzle ORM), and Redis.

Topics

Resources

License

Stars

Watchers

Forks

Releases

No releases published

Packages

No packages published

Languages