← Back to the studio

Junior Stories: source and licences

Junior Stories is Mabni’s independent browser adaptation of the open-source ScratchJr editor. It keeps the original visual programming interface and block engine. It is not the official ScratchJr app and is not endorsed by its creators.

Complete browser-port source · Changes from upstream · BSD 3-Clause licence · Upstream trademark notice.

The editor is pinned to LLK/scratchjr commit 566f2f93896712838ee84cf132097d0413200021. Additional character and backdrop media come from jfo8000/ScratchJr-Desktop commit 919482d724904a560d6c77dab06240341584c502. Penguin is the default character. The ScratchJr cat is not included. Community distribution licence · Trademark notice · Media index.

Browser support uses SQL.js 1.13.0 (MIT), blueimp-md5 2.19.0 (MIT) and JSZip 3.10.1 (MIT option). Their licence notices are retained here.

Build

Extract the source, use Node.js with npm, and run npm ci. The older webpack build needs NODE_OPTIONS=--openssl-legacy-provider on current Node versions. Then run npm run build. Copy the generated app.bundle.js and its map into scratchjr/editor/. Keep the Mabni wrapper, web bridge, bundled SQL.js/WASM, settings, sounds and media in place. Build-time dependency installation needs internet; classroom use does not.

The small source patches select the browser bridge instead of a native tablet bridge, use SVG library thumbnails, support custom bitmap backgrounds, and send the lobby logo home. The readable browser bridge implements local SQL/IndexedDB storage, media, audio, microphone recording and .sjr import/export. Imported stories create a new local project. A full native camera is not provided. Voice recording requires browser permission and localhost or trusted HTTPS.

Projects are saved per Mabni profile in this browser. Download .sjr files for backups or to move to another computer. The teacher’s server backup does not include browser-only Scratch/ScratchJr projects. Original media is retained when saving to avoid races in the upstream thumbnail cleanup; unused media can therefore increase browser storage over time.