Skip to content

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:

https://moodle-playground.com/?blueprint-url=/assets/blueprints/examples/minimal.blueprint.json

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.