Academic case study · CS6004ES

UniManage LMS

University Course Management System built with ASP.NET Core MVC, Identity, and MySQL — role-based academic workflows with evidence from the full coursework report, not a feature wishlist.

Module

CS6004ES Application Development

Stack

.NET 8 · MVC · Identity · MySQL

Hosted demo

lms.yasaboy.com

Roles

3

Student · Lecturer · Administrator

Controllers

13

ASP.NET Core MVC surface

Unit tests

28

Passed · 0 failed (coursework evidence)

Stack

.NET 8

MVC · Identity · MySQL · QuestPDF

Overview

UniManage is an ASP.NET Core MVC University Course Management System delivered as an approved individual CS6004ES coursework submission. It supports Students, Lecturers, and Administrators with secure academic operations — courses, enrolment, assignments, grading, messaging, meetings, audit logs, and analytics.

Problem statement

University academic operations often live in scattered spreadsheets, paper records, and unconnected tools. Students lose track of enrolments and deadlines; lecturers lose submissions and feedback; administrators lack a single secure view of courses, capacity, and usage. Errors follow: duplicate enrolments, exceeded capacity, missing submissions, and inconsistent grades.

  • Students need courses, deadlines, grades, messaging, and meetings in one place.
  • Lecturers need owned-course assignments, materials, grading, and student communication.
  • Administrators need catalogue control, auditability, and reporting without inventing finance or live-video systems.

Trust boundaries

  • Academic coursework for CS6004ES — not a commercial LMS product.
  • No claim of embedded live video conferencing, finance/fees, or external timetable sync.
  • Hosted demo target is https://lms.yasaboy.com — availability depends on the VM deployment.
  • Features listed here are limited to README + controller/view evidence and the coursework report.

Objectives

SMART objectives from the coursework aim — implemented and evidenced in source.

  • Implement Identity registration/login with lockout, anti-forgery, and audit on success/failure.
  • Enforce Student, Lecturer, and Administrator access with [Authorize] and role dashboards.
  • Deliver course management with CRUD, search, paging, prerequisites, capacity, and materials.
  • Support enrolment rules, assignments, submissions, grading, messaging, meetings/ICS, and reports with CSV/PDF export.
  • Ship validation, rate limiting, secure cookies, security headers, and a complete documentation package for CS6004ES.

Timeline

  1. 01

    Coursework brief

    CS6004ES Application Development — university-style management system with UI, auth, roles, courses, enrolment, grading, reporting, security, and documentation.

  2. 02

    Problem framing

    Academic administration pain: scattered tools, duplicate enrolments, lost submissions, weak reporting.

  3. 03

    Architecture & data

    Layered MVC design with Identity, EF Core/Pomelo MySQL, and draw.io diagrams (architecture, use case, ERD, UML, flows).

  4. 04

    Implementation

    Thirteen controllers, Razor dashboards, enrolment rules, assignments, messaging, meetings, audit, and QuestPDF/CSV reports.

  5. 05

    Security hardening

    Anti-forgery, rate limits, secure cookies, security headers, lockout, and audit logging.

  6. 06

    Testing

    Manual feature/role tests plus selected xUnit suite (28 passed) and hosted demonstration evidence for lms.yasaboy.com.

  7. 07

    Documentation

    Main report, individual contribution report, user manual, diagrams, screenshots, and appendices for the approved individual submission.

Product deep dive

Architecture and major modules with expandable detail for a fast recruiter scan.

Identity authentication

ASP.NET Identity powers registration and login with strong password rules, lockout, anti-forgery, and optional Google SSO when configured.

ASP.NET IdentityGoogle OAuthCookies
  • AccountController handles register, login, password reset, and Google callback flows.
  • Failed and successful auth events can be written through the audit logger.
  • Role claims drive Dashboard redirection to Student, Lecturer, or Administrator views.

Student workspace

Students see enrolled courses, upcoming deadlines, submission status, calendar markers, and shortcuts into catalogue, assignments, and messages.

RazorEF CoreBootstrap
  • Dashboard aggregates EF Core queries into role-specific view models.
  • Enrolment enforces capacity, prerequisites, and no-duplicate rules server-side.
  • Assignments accept text and/or allow-listed file uploads before grading locks resubmission.

Lecturer delivery loop

Lecturers manage owned courses: create assignments, upload materials, grade submissions with feedback, and schedule meetings with ICS export.

MVCFile uploadsICS
  • Ownership checks keep lecturers inside courses they teach.
  • Course materials use UploadedFileStore with extension and size validation.
  • Meetings store join URLs rather than hosting live video inside the app.

Admin control and analytics

Administrators manage the course catalogue and users, review audit logs, and export Chart.js-backed reports as CSV or QuestPDF documents.

Chart.jsQuestPDFCSV
  • Reports cover popularity, performance, workload, enrolments, and related academic views.
  • Audit log captures sensitive actions with user, IP, category, and detail.
  • Admin user management supports create/edit/lock flows evidenced in coursework screenshots.

Layered system design

High-level architecture, use cases, ERD, UML, application flowchart, and auth flow diagrams document how UniManage is structured end to end.

.NET 8Pomelo MySQLEF Core
  • Middleware pipeline: HTTPS → static → security headers → routing → rate limit → authz.
  • Domain models map to MySQL through ApplicationDbContext migrations.
  • Boundaries exclude finance, external timetables, and embedded video conferencing.

Architecture

UniManage follows a layered ASP.NET Core MVC architecture. Browser requests enter Kestrel, pass HTTPS redirection, static files, security headers, routing, rate limiting, authentication, and authorisation, then reach controllers that use EF Core (Pomelo) against MySQL 8 and render Razor view models.

  • Presentation

    Bootstrap Razor views, Chart.js reports, role-aware navigation.

  • Application

    Thirteen MVC controllers with Authorize attributes and ownership checks.

  • Infrastructure

    Audit logger, SMTP email, CSV writer, QuestPDF, uploaded file store, security headers.

  • Data

    EF Core 8 + Pomelo MySQL 8 with Identity tables and domain entities in one database.

Database

MySQL 8 via EF Core 8 (Pomelo). Identity and domain entities share one database with migrations for audit/security, meetings, and profile fields.

  • ApplicationUser / Identity roles (Administrator, Lecturer, Student)
  • Courses, Enrollments, Assignments, Submissions
  • CourseMaterials, Messages, Meetings, AuditLogs
  • Migrations: InitialUniManage, audit/security, meetings, DateOfBirth

Modules

Authentication

Register, login, logout, password reset, optional Google sign-in, lockout after failed attempts.

Student

Dashboard, catalogue enrolment, assignments/submissions, grades, messages, meetings.

Lecturer

Teaching dashboard, assignment CRUD, material upload, grading, meetings, messaging.

Administrator

System dashboard, course catalogue, user management, audit log, analytics reports.

Reporting

Course popularity, student performance, lecturer workload, enrolments, pass/fail, CSV + PDF.

Technology stack

.NET 8 / ASP.NET Core MVCC#EF Core 8 + Pomelo MySQLASP.NET IdentityGoogle Authentication (optional)Razor + BootstrapChart.jsQuestPDFCSV export helpersSMTP emailDocker / Google Cloud hosting (demo)

Challenges

  • Identity + Pomelo MySQL

    Integrating ASP.NET Identity with Pomelo MySQL, EF retry configuration, dual rate-limit policies, QuestPDF Community licensing, and audit logging required careful documentation-driven setup.

  • Stability near submission

    Refined admin user management, environment-based configuration, seed data, and hosted testing without adding optional modules that risked instability close to the deadline.

  • Honest hosted evidence

    Documented lms.yasaboy.com deployment evidence without claiming unfinished reverse-proxy or Cloudflare proxy hardening beyond what screenshots prove.

Solutions

  • Follow official ASP.NET / EF / QuestPDF guidance and verify with running builds plus audit log evidence.
  • Keep scope on marking-critical flows: auth, dashboards, courses, enrolment, assignments, grading, reporting, communication, security.
  • Record limitations explicitly (no full E2E UI suite, no live video host, no finance module).

Engineering decisions

  • ASP.NET Core MVC + Razor for one cohesive academic web stack.
  • Single MySQL database for Identity and domain entities via Pomelo EF Core.
  • Server-side business rules for enrolment capacity, prerequisites, and grading bounds.
  • CSV + QuestPDF exports beside Chart.js visuals for assessable reporting evidence.

Development process

  1. 01Requirements and actor analysis for Student, Lecturer, Administrator.
  2. 02Architecture and database diagrams (high-level, use case, ERD, UML, flows).
  3. 03MVC implementation with seeded demo users and role dashboards.
  4. 04Manual functional / role / security testing plus selected xUnit evidence (28 passed).
  5. 05Documentation package: main report, contribution report, user manual, appendices.

Testing

  • Strategy: manual functional tests, role-based checks, security checks, build verification, selected unit tests.
  • Environment: Windows, Visual Studio 2022, .NET 8 SDK, MySQL 8, modern browser.
  • Selected xUnit coverage: role constants, view-model annotations, grading bounds, CSV bytes, calendar links, reset-email HTML, security headers.
  • Coursework evidence: 28 tests passed, 0 failed in the recorded unit-test output screenshot.
  • Limitation: full automated integration / end-to-end UI suites are out of scope.

Lessons learned

  • Document only features that exist in controllers and views.
  • Role dashboards stay coherent when navigation and view-model patterns are shared.
  • Exports are easiest when report queries stay close to dashboard aggregates.

Future improvements

  • Automated unit/integration tests and CI/CD for hosted demos.
  • WCAG 2.1 AA accessibility audit and stronger mobile refinements.
  • Advanced report filters, notifications, 2FA for privileged accounts.
  • Structured logging, caching, i18n, backup automation, and completed HTTPS/proxy evidence when hosting is maintained.

Downloads

Live demo, documentation extracts, and source. Hosted availability depends on the coursework VM.

Demo credentials

Seeded demonstration accounts from the UniManage Installation Guide and User Manual (coursework documentation). Intended for viva/marking only — not production credentials. Do not enter real personal data on the demo site.

RoleEmailPassword
Administrator[email protected]Admin123!
Lecturer[email protected]Lecturer123!
Student[email protected]Student123!

Database passwords, SMTP secrets, Google client secrets, and cloud keys are never published here.

Conclusion

UniManage delivers a complete academic LMS foundation: Identity authentication, three role dashboards, course and enrolment rules, assignment grading, communication, auditability, and exportable analytics — documented and tested for CS6004ES without claiming product-scale modules that were intentionally out of scope.