Modular Self-Hosting
Current documentation: DrawSplat Wiki — setup, installation, licensing, pricing, OAuth, and district privacy review.
DrawSplatTM can be installed as one complete browser-based package, or as drop-in modules that share the same folder structure.
Complete district setup
For the complete DrawSplat + SplatWorks suite, download the full source archive, extract it, and open start-here.html. Quick Start offers each component checked by default and a rerunnable installation plan. The district setup guide covers accounts, classrooms, Google, HTTPS and backups. The drop-in static packages below remain available separately.
Package model
All modules are static files. There is no installer and no server-side linking step. To combine modules, unzip them into the same web root.
| Package | Main paths | Use when |
|---|---|---|
| DrawSplatTM full package | /, /app/, /pages/, /solutions/, /games/, /admin/, /server/ |
You want the complete whiteboard, tools, widgets, games, docs, and backend scaffolds. |
| SplatWorksTM suite | /splatworks/, /pages/splatworks.html |
You want the browser-based office suite as its own entity. |
| GridSplatTM | /splatworks/gridsplat/ |
You only need the spreadsheet app. |
| ShowSplatTM | /splatworks/showsplat/ |
You only need the presentation/WebDeck app. |
| WriteSplatTM | /splatworks/writesplat/ |
You only need the writing app. |
| ListSplatTM | /splatworks/listsplat/ |
You only need the database app. |
| DrawSplatTM Tools | /pages/tools.html, /solutions/ selected tools |
You only need standalone creation tools. |
| DrawSplatTM Widgets | /pages/tools.html#widgets, /solutions/ selected widgets |
You only need quick classroom utilities. |
| DrawSplatTM Games | /games/ |
You only need standalone classroom games. |
| AudioSplat | /solutions/audiosplat/ |
You only need the multitrack browser recorder/editor. |
| ClipSplat | /solutions/clipsplat/ plus /solutions/mediasplat/ffmpeg/ |
Record video, add panels and image cards, cut sections, and export MP4. Use its standalone ZIP with included Python 3 launcher. |
| VideoSplat | /solutions/videosplat/ |
You only need the private browser video editor, subtitle burn-in, and anonymization workflow. |
| MediaSplat | /solutions/mediasplat/ |
You only need media conversion, trimming, and subtitles. |
| PDFSplat | /solutions/pdfsplat/, /vendor/, /assets/ |
You only need PDF editing, signing, scanning, and local protection. |
Combining modules
- Create a web root folder, such as
drawsplat-site/. - Unzip one or more packages into that same folder.
- Keep existing folder names unchanged.
- Serve the folder with any static host.
Example:
drawsplat-site/
├── index.html
├── app/
├── pages/
├── assets/
├── splatworks/
├── solutions/
└── games/
The modules connect because they keep the same paths used by the full DrawSplatTM download.
Standalone SplatWorks
SplatWorksTM can be hosted without the DrawSplatTM whiteboard. Install the SplatWorksTM suite package and open:
/pages/splatworks.html
Direct app paths:
/splatworks/gridsplat/
/splatworks/showsplat/
/splatworks/writesplat/
/splatworks/listsplat/
Building packages
From the repository root:
./scripts/make-selfhost-bundle.sh vX.Y.Z
The command produces the full DrawSplatTM package, individual SplatWorksTM app packages, the SplatWorksTM suite package, and standalone Tools, Widgets, and Games modules, plus independent AudioSplat and VideoSplat solution packages.
AudioSplat recording and editing require HTTPS (or localhost for development).
Its included Google Drive client is authorized for drawsplat.org; another
self-host domain must provide its own Google OAuth Web client, authorize that
origin, enable Google Drive API, request drive.file, and rebuild AudioSplat.
VideoSplat editing, project storage, media analysis, and export are designed to remain local. Serve it over HTTPS (or localhost during development) so the PWA, workers, browser storage, and high-performance media APIs are available.
Subtitle burn-in (v3.1.21)
MediaSplat and VideoSplat standalone packages, the Tools module, and the full DrawSplat package include SRT/VTT burn-in. Keep MediaSplat’s ffmpeg/DejaVuSans.ttf and ffmpeg/FONT-LICENSE.txt with its split runtime files. Update the complete app folder so the HTML, hashed assets, service worker, and font stay together. See the subtitle walkthrough.
Automatic subtitles (v3.1.23)
VideoSplat, MediaSplat, Tools, and full packages include the bundled ONNX speech
runtime and solutions/shared/subtitles source package. Keep that sibling package
when rebuilding either app with npm. The model downloads on first generation
from Hugging Face (about 42 MB) and is cached separately by the browser. Media and
caption text are never uploaded. Offline transcription requires a cached model
and runtime. If you add a host CSP, permit the model download hosts listed in
solutions/videosplat/docs/NETWORK_INVENTORY.md; keep runtime scripts same-origin.
See the automatic subtitle walkthrough.
Current release: v3.1.34
All thirteen packages are refreshed from the current source: full DrawSplat, SplatWorks suite and four individual apps, Tools, Widgets, Games, AudioSplat, VideoSplat, MediaSplat, and PDFSplat. Download matching versions from the download page and verify them with the release’s SHA256SUMS-v3.1.34.txt. The full package includes whiteboard v3.1.12 and the portable MySQL API; individual modules contain their relevant apps and shared files, not a separate whiteboard or MySQL service. Stop active recordings/exports before updating shared assets, keep backups of local projects and backend data, and retain server-only configuration rather than overwriting it with example settings.
The download page shows approximate ZIP and unpacked sizes, measured from release archives in decimal MB. Run python3 scripts/update-download-sizes.py vX.Y.Z after building a release, rebuild with the updated page, then use --check to verify displayed sizes against the final archives.
Offline entry points
Extract the entire ZIP and keep the folder structure intact. Every package includes OPEN-APP.html; individual packages also have a root index.html shortcut when that name is not already used. Complete DrawSplat and Tools include Open-VideoSplat.html, Open-MediaSplat.html, Open-AudioSplat.html, Open-PDFSplat.html, and Open-CipherSplat.html.
PDFSplat and CipherSplat’s dedicated offline edition open directly from disk in desktop Chrome and Firefox. The complete package’s CipherSplat shortcut selects its included offline edition for file access and its hosted app for HTTP access. AudioSplat, VideoSplat, and MediaSplat require the supplied local launcher (Python 3); their file shortcuts show START-HERE.html. A web page cannot automatically start Python or bypass file-origin browser restrictions. Once running locally, core editing does not need internet. Online services and first-time speech-model downloads still do.
ClipSplat add-on
ClipSplat v1.1.1 is a separate download. The existing v3.1.28 archives predate it. Extract the ClipSplat ZIP and upload its solutions/ folders alongside an existing installation, or use START-HERE.html and the Python 3 launcher locally. Keep its included MediaSplat FFmpeg runtime at the supplied path. The v3.1.34 full/Tools bundles include ClipSplat. The v3.1.34 release also supplies a refreshed standalone ClipSplat ZIP and separate checksum file.
Typing Games in v3.1.29
The full DrawSplat and Games packages include the Typing Games menu and Cipher Chase, Wordfall Reactor, Story Sprint, and Paws & Keys Adventure. Install the complete games/, assets/, and vendor/ folders supplied in the package; individual game folders depend on shared files in games/typing-games/. Use the Python 3 launcher for local HTTP access or publish to a static web server. No remote word-bank service is needed. See the game guide for language behavior, TEKS scope, and legacy redirects expiring April 8, 2027.
October 9 creative-tool updates
Current packages include document/image import and PNG/JPG/WebP export in PDFSplat, point placement and on-page formatting, matched text appearance, preserved page rotation, ImageSplat photo adjustments, VideoSplat timeline markers, AudioSplat analysis, ShowSplat WebDeck v5 and slide search, and labelled action icons. Keep shared styles, icon folders, PDF libraries, and ShowSplat framework files together. Details and conversion limits.
Version v3.1.34 also includes PDFSplat presentation/full-screen controls, timed looping, blank screens, and portable WebDeck v5 export in the applicable packages.