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.
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
- Role-based registration: Admin / Instructor / Student
- Secure login using Spring Security and JWT
- User profile management (view/update information)
- 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)
- 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
- Track student scores, submissions, and attendance
- Visual analytics for progress and performance
- In-app notifications: enrollment confirmations, assignment grading, course updates
- Email notifications for important student alerts
- Read/unread filterable notification center for each user
- Role-Based Access Control with Spring Security
- Excel report generation for Admins/Instructors
- Chart-based performance dashboards
- Architecture Style: Microservices
- Communication: RESTful APIs + JWT Authentication
- Database: MySQL (or PostgreSQL/SQLite)
- Frontend: (Optional scope) Connected via API Gateway
| 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 |
-
🔷 Conceptual View
- Microservices-based modular layout
- Stakeholder-focused (Admin, Instructor, Student)
- Key concerns: Modularity, Scalability, Security, Resilience
-
🔶 Execution View
- Component runtime interaction (e.g., Course ↔ User, Auth ↔ Gateway)
- Sequence diagrams for:
- Course enrollment
- Attendance OTP verification
- Quiz submission
- 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)
| 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 |
| 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 | 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 |