Moodle LMS integration (not started) #6

Open
opened 2026-10-15 23:56:00 -04:00 by jfraeys · 0 comments
Owner

Add Moodle as a course-delivery/LMS layer alongside the current Hugo+Go stack — course delivery, progress tracking, assessments, certificates, gated behind the same coach/client privacy expectations the rest of the site holds to. Not started — no PHP/MySQL infrastructure exists in this repo today, and this is a bigger infra commitment than anything else in docs/future_additions.md.

Shape of the change: Moodle would sit at /courses (subpath or subdomain) behind nginx, needing its own PHP-FPM + MySQL/MariaDB services — a real addition to the current "nginx + one Go binary" footprint, not a Go-API-only feature. deploy.sh would need a Moodle migration/data-directory step, and backups would need to cover the Moodle database separately from leads.db/version_history.db (see docs/DEPLOYMENT.md's Backup Strategy).

Integration surface: Moodle's REST web-service API (/login/token.php for token auth, moodle/webservice:createtoken + webservice/rest:use capabilities) is the mechanism for syncing leads into Moodle users, auto-enrolling them in courses, and getting enrollment/progress events back — new Go API endpoints (POST /moodle/sync-user, POST /moodle/enroll, POST /moodle/webhook), not something that reuses the existing booking/CMS endpoints.

Open design questions, not yet decided: single sign-on between the Hugo site's (nonexistent today) visitor auth and Moodle's own login; whether lead→Moodle user mapping happens at signup or at first course access; GDPR export/deletion needs to cover the Moodle database too, not just leads.db.

See docs/future_additions.md ("Moodle LMS Integration"). Also connects to the user's existing moodle/fetch_ml plans noted in infra project memory (tenancy model).

Add Moodle as a course-delivery/LMS layer alongside the current Hugo+Go stack — course delivery, progress tracking, assessments, certificates, gated behind the same coach/client privacy expectations the rest of the site holds to. Not started — no PHP/MySQL infrastructure exists in this repo today, and this is a bigger infra commitment than anything else in `docs/future_additions.md`. **Shape of the change**: Moodle would sit at `/courses` (subpath or subdomain) behind nginx, needing its own PHP-FPM + MySQL/MariaDB services — a real addition to the current "nginx + one Go binary" footprint, not a Go-API-only feature. `deploy.sh` would need a Moodle migration/data-directory step, and backups would need to cover the Moodle database separately from `leads.db`/`version_history.db` (see `docs/DEPLOYMENT.md`'s Backup Strategy). **Integration surface**: Moodle's REST web-service API (`/login/token.php` for token auth, `moodle/webservice:createtoken` + `webservice/rest:use` capabilities) is the mechanism for syncing leads into Moodle users, auto-enrolling them in courses, and getting enrollment/progress events back — new Go API endpoints (`POST /moodle/sync-user`, `POST /moodle/enroll`, `POST /moodle/webhook`), not something that reuses the existing booking/CMS endpoints. **Open design questions, not yet decided**: single sign-on between the Hugo site's (nonexistent today) visitor auth and Moodle's own login; whether lead→Moodle user mapping happens at signup or at first course access; GDPR export/deletion needs to cover the Moodle database too, not just `leads.db`. See `docs/future_additions.md` ("Moodle LMS Integration"). Also connects to the user's existing moodle/fetch_ml plans noted in infra project memory (tenancy model).
Sign in to join this conversation.
No labels
No milestone
No project
No assignees
1 participant
Notifications
Due date
The due date is invalid or out of range. Please use the format "yyyy-mm-dd".

No due date set.

Dependencies

No dependencies set

Reference
jfraeys/coaching-site#6
No description provided.