Moodle Playground¶
Run a full Moodle site entirely in your browser — no server, no install, nothing leaves your machine.
Moodle Playground boots a real Moodle LMS on WebAssembly (PHP compiled to WASM, powered by WordPress Playground). Every tab is a disposable, in‑memory instance you can shape with a small JSON blueprint.
Open Playground View on GitHub Read Blueprints Use PR Preview Action
What it's for¶
- Plugin developers — test a plugin from a GitHub branch in seconds, then add a PR preview button so reviewers can try it in the browser.
- Teachers & trainers — explore activities or run a workshop where every attendee gets their own throwaway Moodle.
- QA & demos — reproduce a specific Moodle/PHP version, or ship a shareable demo course as a single blueprint URL.
Default credentials
Username admin, password password. Change them with an installMoodle step in your blueprint.
Ephemeral by design
All state lives in memory. A reload keeps your data within the same tab; closing the tab destroys everything. It is built for exploration and testing, not for storing real data.
A minimal blueprint¶
A blueprint is a JSON file that provisions an instance at boot. This one installs Moodle, logs in as admin, and creates a course:
{
"steps": [
{ "step": "installMoodle", "options": { "siteName": "My Moodle" } },
{ "step": "login", "username": "admin" },
{ "step": "createCourse", "fullname": "Physics 101", "shortname": "PHYS101" }
]
}
Load any blueprint by URL:
See the blueprint overview, examples, and full reference.
How it works¶
flowchart TD
User[User browser] --> Shell[Shell UI]
Shell --> Frame[Runtime iframe]
Frame --> SW[Service Worker]
SW --> Worker[PHP WASM worker]
Worker --> Moodle[Moodle]
Moodle --> DB[(SQLite in memory)]
Worker --> FS[(MEMFS moodledata)]
The shell hosts a scoped runtime iframe; a service worker routes requests to a PHP‑WASM worker that boots Moodle from a prebuilt snapshot into in‑memory storage. See the architecture overview.
Where to go next¶
- Quick start — try it online or run it locally in three commands.
- Basic usage — the shell UI, loading blueprints, limitations.
- Blueprints — provision users, courses, plugins, and more.
- PR previews — add a one‑click preview button to plugin pull requests.
- Architecture — how the pieces fit together.
- Contributing — build, test, and extend the project.
Made with by Área de Tecnología Educativa
Moodle™ is a registered trademark of Moodle Pty Ltd. Moodle Playground is an independent project and is not affiliated with, endorsed by, or sponsored by Moodle Pty Ltd.