GET /work/lms
Learning Management System
Role-based LMS for students, teachers, and management — 30+ REST endpoints covering enrollment, grading, attendance, notices, and fees.
ARCHITECTURE
A React client serving three roles — students, teachers, and management — calls an Express API with 30+ REST endpoints enforcing role-based access with JWT, backed by Microsoft SQL Server.
SECTION /decisions
Key Decisions
Authorization is the spine
This is a system with three kinds of user in it — students, teachers, and management — so authorization is the spine of the design. Each role sees a different slice of the same data, enforced with JWT on the API rather than hidden in the UI.
A relational domain on a relational database
The domain is classically relational — enrollment, grading, attendance, notices, and fees all reference the same students, courses, and terms — which is why it sits on Microsoft SQL Server. The API surface grew to 30+ REST endpoints organized around those five domains.
SECTION /challenges
Challenges
The width of the API was the challenge: 30+ endpoints across five domains, each needing consistent role checks, error shapes, and validation so the three client roles could rely on uniform behavior.
SECTION /result
Result
A role-based LMS where students, teachers, and management each work against the same Express API — 30+ REST endpoints covering enrollment, grading, attendance, notices, and fees.