Skip to main content

Documentation Index

Fetch the complete documentation index at: https://mintlify.com/ateeducacion/moodle-playground/llms.txt

Use this file to discover all available pages before exploring further.

Moodle Playground runs a full Moodle™ LMS entirely inside your browser using WebAssembly. Powered by WordPress Playground’s @php-wasm/web runtime, it boots a fresh Moodle instance with a pre-built SQLite snapshot in roughly three seconds — no server, no backend, no data ever leaving your machine. Use it to demo courses, validate plugins, reproduce bugs, share reproducible scenarios, or preview pull requests — all from a single URL.

Quick Start

Open the live demo or run locally in three commands. No prerequisites for the hosted version.

Blueprints

Provision courses, users, plugins, and themes declaratively at boot with a JSON blueprint.

PR Previews

Automatically post an “Open in Moodle Playground” button on every plugin pull request.

URL Parameters

Select Moodle and PHP versions, load blueprints, and enable debug mode from the URL.

How it works

The shell UI hosts a scoped iframe that registers a Service Worker. The Service Worker intercepts every request and forwards it to a PHP-WASM worker, which runs Moodle against an in-memory SQLite database. Everything lives in the JavaScript heap — closing the tab destroys all state.
index.html          Shell UI (toolbar, address bar, log panel)
  └─ remote.html    Runtime host — registers the Service Worker
       ├─ sw.js     Intercepts requests → routes to PHP worker
       └─ php-worker.js
            └─ @php-wasm/web (WebAssembly PHP 8.x)
                 ├─ Moodle core in MEMFS   (extracted from ZIP bundle)
                 └─ In-memory state        (SQLite + moodledata in MEMFS)
Default credentials: username admin, password password. Override them via an installMoodle step in a blueprint.

Start in 30 seconds

1

Open the live demo

Go to moodle-playground.com — no install needed. Moodle boots in a few seconds.
2

Log in

Use the default admin account: username admin, password password.
3

Load a blueprint

Add ?blueprint-url=/assets/blueprints/examples/course-with-content.blueprint.json to the URL to boot with a pre-built course, or import your own .json from the Blueprint panel.
4

Explore or share

Navigate Moodle as normal. Copy the URL (with ?blueprint-url= or ?blueprint=) to share an exact reproducible setup with anyone.

Key features

Multiple Moodle Versions

Switch between Moodle 4.4, 4.5, 5.0, 5.1, 5.2, and main — and PHP 8.1–8.5 — from the side panel or via URL parameters.

Plugin & Theme Install

Install any Moodle plugin or theme from a GitHub archive ZIP URL with a single blueprint step.

Crash Recovery

If the WASM runtime crashes (OOM, FD exhaustion), the worker snapshots the DB, reboots, and restores state automatically.

Docker-compatible Blueprints

A portable blueprint subset also runs in the sibling alpine-moodle Docker runtime.

Build docs developers (and LLMs) love