Library / SDK
spacedeck/spacedeck-open avatar
spacedeck/spacedeck-open

Spacedeck Open: a self-hosted collaborative whiteboard with rich media

Spacedeck, a web based, real time, collaborative whiteboard application with rich media support

1,139 stars246 forksJavaScriptAGPL-3.0

At a glance

What is it?
Spacedeck Open is the open source release of a commercial web whiteboard that ran from 2011 to 2018 and was reopened in 2020, giving you infinitely large Spaces, multimedia drop-in, drawing, real-time collaboration and PDF export on a single Node process. It suits a classroom or team that wants a self-hosted canvas, and it is a codebase with a decade of history behind it.
Who is it for?
Adopt Spacedeck Open if you need a self-hosted collaborative whiteboard with media support and were relying on the hosted service before it shut down, since the whole point of the open source release is to let organisations migrate to a local version. Skip it if you want a modern product with maintained releases, because the repository has no GitHub releases and the code dates from the 2011 to 2016 era.
Can I use it commercially?
Yes, with strict conditions. AGPL-3.0 is a network copyleft licence: if people use a modified version over a network, for example as a hosted service, you must offer them its source code under the same licence.
Is it still maintained?
Yes. The repository last received commits 2 days ago.
What is it written in?
Mainly JavaScript, according to GitHub's language statistics.

Answers come from the project's GitHub data, last synced on October 22, 2026, and from our analysis. They are not legal advice.

Editorial analysis

What it was, and why it was opened up

Spacedeck Open is the free and open source version of Spacedeck, a web based, real time, collaborative whiteboard application with rich media support. The history is stated plainly. Spacedeck was developed in 6 major releases during Autumn 2011 until the end of 2016, and it was originally a commercial SaaS. The spacedeck.com online service was shut down on May 1st 2018, and the decision was made to open-source Spacedeck to allow educational and other organisations who currently rely on it to migrate to a self-hosted or local version. MNT Research GmbH restarted development of Spacedeck Open in 2020. The developers were Lukas F. Hartmann and Martin Güther. The primary language is JavaScript, the licence is AGPL-3.0, the default branch is `mnt`, and the last push was on 2026-10-07. The repository has no GitHub releases, so the version marker is the package version of 1.0.0 in the manifest, and the site itself is at port 9666.

The feature set, and what is listed as broken

The features are listed in eight lines and they describe a whiteboard rather than a diagram tool. You create virtual whiteboards called Spaces with virtually unlimited size. You can drag and drop images, videos and audio from your computer or the web. You write and format text with full control over fonts, colours and style. You draw, annotate and highlight with included graphical shapes. You can turn a Space into a zooming presentation. You collaborate in realtime with teammates, students or friends. You share Spaces on the web or by email. And you export your work as printable PDF or ZIP. The last of those comes with a parenthetical that the export is currently being fixed and to stay tuned, which is the clearest signal in the README about the state of the code. The use cases given are education with virtual classwork and multimedia, creative work such as mood boards, brainstorming and design thinking, and visual note taking and planning.

Running it, and the requirement list that has drifted

The requirements section has an internal inconsistency worth knowing about, because it tells you the README has not been fully updated. The listed requirements are Node.js 18.x for the web server and API, Graphicsmagick, which on Linux is installed via a package manager, and optionally ffmpeg, audiowaveform and ghostscript. A few lines later the README says that to run Spacedeck you only need Node.JS 10.x. The manifest's `engines` field says `>=10.0.0`, which matches the older statement, while the Docker image is on node:18-alpine. So the code runs on modern Node and the requirement list is stale rather than the reverse. The install itself is the ordinary one, and it is a single command after cloning:

bash
npm install

Then the server is started and you open http://localhost:9666 in a browser:

bash
node spacedeck.js

The `start`, `dev` and `styles` scripts mirror that, with nodemon for development and gulp for the styles.

Configuration, storage and the two database options

Configuration lives in `config/default.json`, and the keys split into two groups. For storage, you set `storage_local_path` for a local sqlite database, or you set `storage_region`, `storage_bucket`, `storage_cdn` and `storage_endpoint` for AWS S3, with the note to omit a trailing slash for the endpoint. For mail, `mail_provider` may be one of `console` or `smtp`. The default storage behaviour is that media files are uploaded to the `storage` folder and the database is stored in `database.sqlite`. There is a Postgres option, though it is explicitly not officially supported, which needs the `pg` module and `storage_dialect` set to `postgres` along with host, database, username and password. The `db_logs_disabled` flag turns off the database logs, and the colour configuration is worth a look because it has a usability trap, since the custom swatches array should include the transparent swatch so users can remove the applied colour, and the default text, stroke and fill colours should also appear in the custom swatches palette.

The Docker image, and why Chromium is in it

The Dockerfile explains a lot about how the application works. The base is `node:18-alpine`, and it installs Chromium along with nss, freetype, harfbuzz, ca-certificates and ttf-freefont, then sets `PUPPETEER_SKIP_CHROMIUM_DOWNLOAD=true` and points `PUPPETEER_EXECUTABLE_PATH` at the installed browser. The reason is visible in the dependency list, where puppeteer sits alongside the media tooling. Chromium is used to render images and to produce the PDF and ZIP exports, so the server is a headless browser as much as a Node application. Graphicsmagick, ffmpeg and ghostscript are installed in the same layer, matching the optional dependencies for image conversion, video and audio conversion, and PDF import. The compose file mounts the `storage` and `database` directories and publishes 9666.

What the codebase looks like

The tree is a classic Express application from the period. There is `spacedeck.js` as the entry point, `routes/` for the HTTP layer, `models/` for the Sequelize models, `middlewares/` for the Express middleware, `helpers/`, `integrations/`, `views/` for the EJS templates and `locales/` for the translation files, which the `i18n-2` dependency supports. There is a `database/` directory for the migrations, run with umzug, and a `styles/` directory with the Sass that gulp compiles, and a `Gulpfile.js` at the root with the `styles` task. The dependency list is characteristic of the era, with `request` and `body-parser` for HTTP, `cheerio` for HTML parsing, `sanitize-html` for cleaning user HTML, `helmet` for security headers, `bcryptjs` for password hashing, `nodemailer` for mail, `archiver` for the ZIP export and `mock-aws-s3` for testing the S3 path. The copyright line reads Copyright (C) 2011-2018 Lukas F. Hartmann, Martin Güther, with the icons and original CSS design credited to Thomas Helbig, and the Spacedeck logo and brand assets registered as trademarks of Spacedeck GmbH.

Editorial conclusion

Adopt Spacedeck Open if you need a self-hosted collaborative whiteboard with media support and were relying on the hosted service before it shut down, since the whole point of the open source release is to let organisations migrate to a local version. Skip it if you want a modern product with maintained releases, because the repository has no GitHub releases and the code dates from the 2011 to 2016 era. Before you deploy, note that it runs on Express with Sequelize over SQLite, that the Docker image needs Chromium, GraphicsMagick, ffmpeg and ghostscript, and that PDF and ZIP export is listed as currently being fixed.

Frequently asked questions

What is Spacedeck Open?

The free and open source version of Spacedeck, a web based, real time, collaborative whiteboard with rich media support. Spacedeck was a commercial SaaS from 2011 to 2016, the hosted service shut down in May 2018, and the code was opened to let organisations migrate to a self-hosted version, with development restarted in 2020.

How do I run Spacedeck Open?

Install the Node dependencies with `npm install` after cloning, then start the server with `node spacedeck.js` and open http://localhost:9666. The requirements list Node.js 18.x and Graphicsmagick, with ffmpeg, audiowaveform and ghostscript optional. Docker is supported with `docker-compose up`.

What storage backends does Spacedeck support?

By default media files go to the storage folder and the database to database.sqlite. You can point it at AWS S3 with storage_region, storage_bucket, storage_cdn and storage_endpoint. A Postgres option exists using the pg module and storage_dialect, but the README marks it as not officially supported.

Why does the Spacedeck Docker image include Chromium?

Because the application uses Puppeteer to render images and produce the PDF and ZIP exports, so the image installs Chromium, sets PUPPETEER_SKIP_CHROMIUM_DOWNLOAD and points PUPPETEER_EXECUTABLE_PATH at the system browser. Graphicsmagick, ffmpeg and ghostscript are installed for media conversion and PDF import.

Official sources

  1. Issues
  2. License: AGPL-3.0
  3. README
  4. spacedeck/spacedeck-open on GitHub
Add this badge to your README

If you maintain this project, the badge below links readers to this analysis and shows its maintenance status from the daily GitHub snapshot. Paste the markdown into your README; add ?metric=license or ?metric=stars to the image URL for a different field.

Add this badge to your README

markdown
[![Hysen Labs](https://hysenlabs.com/badge/spacedeck-spacedeck-open.svg)](https://hysenlabs.com/projects/spacedeck-spacedeck-open)

Was this useful?