Design and Evaluation of a Multi-Signal Learner Modeling Framework for Adaptive, Interpretable E-Learning Recommendations in Rwanda
# MELF — Full-Stack Prototype
**Design and Evaluation of a Multi-Signal Learner Modeling Framework for
Adaptive, Interpretable E-Learning Recommendations in Rwanda** — the
working prototype for Objective 3 of the proposal, now with both halves:
- **`melf/`** — Django + DRF backend: BKT learner modeling, interpretable
recommendation engine, offline delta-sync, JWT auth, role-scoped APIs
for students/teachers/admins, Postgres/Redis/Celery. See
`melf/README.md` for the full Chapter 3 architecture mapping.
- **`melf-frontend/`** — React client with three role-based portals:
**Student** (mastery compass, quick-check quiz, explained
recommendations, history), **Teacher** (full class roster with
per-student drill-down, content management, activity log), and
**Administrator** (learner statistics, user management, school
management, content management). See `melf-frontend/README.md`.
## Run both together (local dev, no Docker)
**Terminal 1 — backend:**
macOS / Linux:
```bash
cd melf
python3 -m venv venv
source venv/bin/activate
pip install -r requirements.txt
cp .env.example .env
python manage.py migrate
python manage.py seed_demo
python manage.py runserver
```
Windows (Command Prompt):
```bat
cd melf
python -m venv venv
venv\Scripts\activate.bat
pip install -r requirements.txt
copy .env.example .env
python manage.py migrate
python manage.py seed_demo
python manage.py runserver
```
Windows (PowerShell):
```powershell
cd melf
python -m venv venv
venv\Scripts\Activate.ps1
pip install -r requirements.txt
Copy-Item .env.example .env
python manage.py migrate
python manage.py seed_demo
python manage.py runserver
```
> **You must activate the venv (`venv\Scripts\activate...`) before `pip
> install`.** If the prompt doesn't show `(venv)` at the start of the
> line, packages install to your system Python instead of the project's
> venv, and `python manage.py ...` will fail with `ModuleNotFoundError`
> even though pip reported success.
>
> `requirements.txt` intentionally has …