Overview
From Solo Prototype to Team Platform
LMS is a full-stack learning and assessment platform designed to support course administration, structured learning content, learner enrollment, online quizzes, assessment reporting, and role-based operations.
The application's initial version was designed and developed independently during my internship. After the solo prototype was positively received, its core design approach was adopted into a larger team implementation, which was developed collaboratively rather than solely owned by one person. I continued as a primary developer within the team for the extended platform.
The project was an early opportunity to work across the complete product lifecycle: defining the domain model, implementing backend and user-facing workflows, integrating an AI-assisted service, and deploying the system through a containerized environment.
Product Scope
Structured learning hierarchies and multi-role operations
The platform supports multiple user and operational workflows, dividing administrative and instructor actions from learner actions. Course content is modeled hierarchically to manage learning material within a consistent product workflow:
- Content Administration — Instructors can manage training programs, courses, ordered sections, learning modules, lessons, quizzes, questions, and answer options.
- Learner Workflows — Learners browse available courses, self-enroll, navigate structured lessons, complete quizzes, and review attempt histories.
- Assessment Tracking — Persisted attempt records keep track of submitted answers, duration, scores, and assessment-monitoring logs.
- Data Utilities — Supporting tools import pre-structured course content, convert spreadsheets to structured JSON, and generate multi-set examinations.
Architecture
Decoupled Multi-Service Topology
To separate stateful product workflows from compute-intensive AI inference, the system is structured as a containerized environment managed via Docker Compose. Static files and uploaded media are mounted directly to the reverse proxy layer for efficient serving.
Browser (Client)
|
Nginx reverse proxy
|
-----------------------------------------------
| |
Django LMS Application (State, Users, Quiz) FastAPI Service (PyTorch model)
| |
Database Face-presence signals for assessment monitoring Engineering Decisions
Architecting for reliability and performance
- Isolate Compute-Oriented Inference — Placed face detection behind an independent FastAPI service. This separated stateful workflows from GPU-dependent runtimes and model load overhead, keeping the core Django server lightweight and responsive.
- Model the Learning Domain Explicitly — Represented courses using strict, structured database hierarchies instead of flat content strings. This supported unified course management for instructors and structured linear navigation for learners.
- State Preservation for Audit Trails — Persisted assessment monitoring metrics alongside raw answers. Attempt records serve as comprehensive evidence reports containing duration, scores, tab-blur counts, and face-detection logs.
- Standardized Service Orchestration — Orchestrated services (Django, FastAPI, Nginx, Cloudflare Tunnel) using Docker Compose to reduce environment drift between local development and deployment.