02 — Internal
Learning Management System
A FastAPI LMS: courses, content delivery and assessments.
A learning management system with a FastAPI backend: structured courses, sequenced content delivery, and assessments with results tied back to the learner's progress.
- Role
- Backend developer
- Year
- 2024
- Status
- Internal
Links for this project are not public yet.
Problem
Course platforms get hard in the middle: content has an order, enrolment has a state, and an assessment result has to mean something in the context of a specific learner's progress. Treating those as separate features produces a system that cannot answer basic questions.
Approach
The data model came first: courses contain ordered modules, enrolment links a learner to a course, and attempts link a result to both. Content delivery and assessment endpoints are queries over that model rather than special cases.
Key features
- 01Course and module structure with ordered content
- 02Content delivery scoped to enrolled learners
- 03Assessments with submissions and results
- 04Progress tracked per learner, per course
Architecture & decisions
Model the curriculum, not the screens
Course, module, lesson, enrolment and attempt are first-class entities, so ordering and access rules are enforced in one place.
Typed boundaries
FastAPI's request and response schemas define the contract between backend and any client, which kept the API honest as features were added.
Progress as a derived fact
Learner progress is computed from completed content and attempts instead of being stored as a mutable percentage.
Outcome
The LMS is the project that made relational modelling click for me: most feature requests became queries once the entities and their relationships were right. It is used internally.