2025 — Backend development and data modelling
Adaptive assessment LMS
Learning platform with adaptive paths, a question bank and personalised assessment.
- Flask
- PostgreSQL
- TypeScript
- Docker
- Role
- Backend development and data modelling
- Duration
- 5 months
- Year
- 2025
Architecture
-
Interface
- Learner path
- Instructor dashboard
-
API
- Flask and answer validation
- Question selection engine
-
Data
- PostgreSQL (questions, attempts)
- Mastery history per skill
-
Operations
- Versioned migrations
- Backups and monitoring
Context
[TO COMPLETE: the project setting, the target audience and the initial learning problem.]
The problem
[TO COMPLETE: one path for everyone, barely actionable results, time-consuming grading.]
The solution
Each question is linked to a skill and a difficulty level. After every attempt, the engine updates a mastery estimate, then picks the next question within a window that stays challenging without discouraging the learner.
The data model separates the question bank, attempts and aggregated results. That separation makes it possible to recompute a path without losing history, and to give instructors a per-skill view instead of a single average.
My role
[TO COMPLETE: what you designed and built — schema, API, algorithm, tests.]
What I take away
[TO COMPLETE: two or three sentences about the project trade-offs.]
Challenges
-
Avoiding questions that are too easy or too hard: per-skill level estimation and selection within a difficulty window.
-
Ensuring fairness between learners: reproducible draw, skill weighting and attempt logging.
-
Keeping response times short despite the history: aggregate queries and cached computed paths.
Results
- skills tracked per learner
- 6 skills tracked per learner
- manual grading time [TO COMPLETE]
- -40% manual grading time [TO COMPLETE]
- learners in the test phase [TO COMPLETE]
- 120 learners in the test phase [TO COMPLETE]
Screenshots
[TO COMPLETE: add 2 to 4 screenshots with alt text.]