A powerful, indestructible micro-kernel canvas where everything is a plugin.
No built-in features. No bloat. Just an ultra-resilient micro-kernel (v5.0) that can transform into an OS desktop, a DAW music studio, a retro arcade machine, or a developer workstation.
- 100% Modularity: Everything (UI, tools, layouts, and the Plugin Manager) is a plugin.
- Zero-Redeployment Extensibility: Core code stays static on Netlify while plugins are hosted on GitHub and fetched dynamically as raw ES modules.
- Indestructible Micro-Kernel:
- 🛡️ Scoped Plugin Sandboxes: Dedicated sandbox per plugin with automatic zero-leak disposal of event listeners, styles, DOM elements, and timers.
- 🚀 Offline Code Cache: Instant 0ms boot using IndexedDB caching with background stale-while-revalidate update checks.
- 🛟 Safe Mode & Crash Guard: Automatically detects consecutive crash loops and boots into Safe Mode for instant recovery.
- 🤝 Service Registry: Inter-Plugin RPC allowing plugins to export shared audio engines, physics, or parsers.
- 💾 Hybrid Storage: LocalStorage for fast preferences + IndexedDB (
api.storage.db) for large media/canvas data. - 📦 Workspace Bundles: Export and import full workspaces (
.blankboardbundles) with 1 click.
-
Clone or download this repository.
-
Open
index.htmlin your browser, or serve it locally:npx serve . -
Right-click anywhere on the board to open the Plugin Manager.
-
Switch to the Discovery tab to browse and install plugins.
- Standalone
.jsfiles (ES modules) - Export
meta,setup(api), and optionalteardown() - Run inside an isolated, managed container (
api.container) - Full access to the event bus (
api.bus), hybrid storage (api.storage), and services (api.services)
export const meta = {
id: 'my-plugin',
name: 'My Plugin',
version: '1.0.0'
};
export function setup(api) {
// 1. Scoped CSS
api.injectCSS(`
.my-card {
padding: 16px;
font-family: system-ui;
}
`);
// 2. Build UI in managed container
const container = api.container;
container.innerHTML = `
<div class="my-card">
<h3>${meta.name}</h3>
<button id="btn">Click Me</button>
</div>
`;
container.querySelector('#btn').addEventListener('click', () => {
api.notify('Hello from Blank Board v5.0!', 'success');
});
}Full documentation is live on Mintlify:
| Section | What's Covered |
|---|---|
| Getting Started | Installation & philosophy |
| Architecture | Micro-Kernel v5, Sandboxing, Safe Mode & Cache |
| API Reference | Full API reference (container, bus, storage, services) |
| Game Blueprint | Game loops, Canvas 60FPS, controls |
| Audio/Media Blueprint | WebAudio API, Synthesizers, Visualizers |
| Workspace Bundles | .blankboard export, import & sharing |
MIT License — see LICENSE for details.