LMS · DevOpsIn production · Enterprise education client

Moodle — Custom Plugins & Container Stack

The Problem

An enterprise education client running Moodle at scale needed more than the marketplace plugin ecosystem could give them: token cleanup for Azure OIDC sessions, group and cohort sync against external identity systems, audited course-completion sync into a downstream vault, safe ad-hoc SQL reporting for admins, custom dashboard blocks, and a container image that exposed nginx metrics for Prometheus. They also needed the whole stack reproducible across environments.

The Solution

Five custom Moodle plugins totaling 78+ PHP files. local_automationservices exposes a web service API and integrates with external orchestration. local_bethel handles cohort/group sync, transcript display, user-merge utilities, and OIDC token cleanup across four custom DB tables. local_mesh syncs course completions into a vault with an audit ledger. local_sqlreport runs a curated set of safe SELECT queries with date filtering, sorting, and CSV export. block_hubts is a custom dashboard block. The container side: a 258-line multi-stage Dockerfile that compiles nginx from source with the VTS module for Prometheus metrics, a docker-compose.yml orchestrating MySQL 8 and Redis with feature-flag environment variables, and a Lambda theme with custom fonts and assets.

Tech Stack

PHPMoodle 4.5 LTSMySQL 8RedisDockernginx (custom build)Azure OIDCsupervisord

Results

5 custom plugins (78+ PHP files, 4 custom DB tables)
Multi-stage Dockerfile with custom nginx VTS for metrics
Azure OIDC integration including token cleanup tasks
Vault sync for course completions with full audit ledger
Curated safe-SQL reporting tool with CSV export
Lambda theme + custom dashboard blocks
Feature-flagged container stack reproducible across environments

Have a project like this?

Tell me about your project →