Skip to content

Salmamohamedd/lms

Folders and files

NameName
Last commit message
Last commit date

Latest commit

 

History

52 Commits
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 

Repository files navigation

🎓 Java-Based Learning Management System (LMS)

A robust, scalable, and modular web-based application developed in Java with Spring Boot. The LMS is designed to streamline the delivery of online education by supporting course management, assessments, notifications, and performance tracking for students, instructors, and administrators.

This project was developed as part of the Advanced Software Engineering course and follows the IEEE 42010:2011 standard for software architecture documentation.


📌 Project Overview

The Learning Management System (LMS) is intended to support the full educational lifecycle, offering:

  • Role-based user access (Admins, Instructors, Students)
  • Course creation and enrollment
  • Quizzes and assignments
  • Attendance and performance tracking
  • Notifications and analytics

🧩 Key Features

👤 User Management

  • Role-based registration: Admin / Instructor / Student
  • Secure login using Spring Security and JWT
  • User profile management (view/update information)

📚 Course Management

  • Instructors can create and edit courses with metadata and uploaded materials (PDFs, videos, audio)
  • Students can browse and enroll in courses
  • Admins/Instructors can view enrolled students
  • Lesson-level attendance via OTP (One-Time Passwords)

📝 Assessments & Grading

  • Create and manage quizzes (MCQ, T/F, Short Answer)
  • Maintain question banks per course
  • Randomized quiz generation
  • File-based assignment submissions
  • Manual grading and automated quiz feedback

📊 Performance Tracking

  • Track student scores, submissions, and attendance
  • Visual analytics for progress and performance

🔔 Notifications

  • In-app notifications: enrollment confirmations, assignment grading, course updates
  • Email notifications for important student alerts
  • Read/unread filterable notification center for each user

📈 Bonus Features

  • Role-Based Access Control with Spring Security
  • Excel report generation for Admins/Instructors
  • Chart-based performance dashboards

🏗️ Architecture Summary

  • Architecture Style: Microservices
  • Communication: RESTful APIs + JWT Authentication
  • Database: MySQL (or PostgreSQL/SQLite)
  • Frontend: (Optional scope) Connected via API Gateway

Core Components:

Service Responsibilities
User Service User auth, profiles, roles (Admin, Instructor, Student)
Course Service Course CRUD, enrollments, materials
Assessment Service Quizzes, question bank, grading
Notification Service System & email notifications
Analytics Service Reporting, charts, performance insights
Authentication Token issuing/validation using JWT
API Gateway Request routing, load balancing, security
DAL Database abstraction for service independence

🧪 Architecture Views

  1. 🔷 Conceptual View

    • Microservices-based modular layout
    • Stakeholder-focused (Admin, Instructor, Student)
    • Key concerns: Modularity, Scalability, Security, Resilience
  2. 🔶 Execution View

    • Component runtime interaction (e.g., Course ↔ User, Auth ↔ Gateway)
    • Sequence diagrams for:
      • Course enrollment
      • Attendance OTP verification
      • Quiz submission

⚙️ Technical Stack

  • Java 17+ with Spring Boot
  • Spring Security + JWT (Authentication & Role-based access)
  • MySQL / PostgreSQL / SQLite (via JPA/Hibernate)
  • JUnit 5 (Unit Testing)
  • Maven (Dependency Management)
  • Git + GitHub (Version Control)
  • Redis (Optional: Caching for performance boost)

👥 Stakeholders

Stakeholder Responsibilities
Admin System configuration, user/course oversight, analytics/reporting
Instructor Course design, quiz creation, grading, performance tracking
Student Enroll, participate in quizzes/assignments, monitor progress
Maintainer Ensure system health, perform updates and backups

🧠 Design Decisions

Decision Rationale
Microservices Architecture Supports independent scaling and fault tolerance
Spring Boot + JWT Enables secure, stateless authentication
Data Access Layer Enables switching DBs (e.g., MySQL to MongoDB) without changing services
API Gateway Central access point, simplifies routing and security enforcement

📊 Scenario Evaluations (ATAM)

Scenario Response
Course Service spike during enrollment Scale horizontally via load-balanced containerized services
Inactivity beyond 15 mins Session timeout & token invalidation via Auth Service
Notification failure Retry queue with exponential backoff
Quiz submission lag Implement Redis cache and optimize DB indexes
Add certification module Introduce new microservice with minimal impact via API Gateway
Profile update consistency Implement eventual consistency with event-based messaging

About

No description, website, or topics provided.

Resources

Stars

Watchers

Forks

Releases

No releases published

Packages

No packages published

Contributors 6

Languages