# Aboard is a plain JavaScript whiteboard built for classroom touch screens

> Aboard is a MIT licensed web whiteboard written in vanilla JavaScript on the HTML5 canvas, with classroom tools like timers and random roll call, eight languages, offline support and no build step for running it. It suits teachers on interactive displays and developers who want to read the whole thing.

**lifeafter619/Aboard** — 一个简约的web白板，更适合老师体质 | Just a board.

- Repository: https://github.com/lifeafter619/Aboard
- Website: https://aboard.pp.ua
- Stars: 583 · Forks: 22
- Language: JavaScript
- License: MIT
- Published: 2026-10-22 · Updated: 2026-10-22 · Language: en
- Canonical page: https://hysenlabs.com/projects/lifeafter619-aboard

## A whiteboard for a touchscreen, not for a design team

Aboard is described as a simple web whiteboard that suits a teacher better, and the project description says the target audience in plain terms, a lightweight web whiteboard aimed at classroom, presentation and large touch screen scenarios. The stated goal is a whiteboard with simple features, simple deployment and an extremely simple, intuitive use, and it was designed primarily for use in Chinese secondary and primary school integrated teaching machines. The design position is that it keeps deployment simple, is easy to start, has practical features, and suits both the open and use immediately pattern and continuing to develop it further. The reason this is worth knowing before you look at the code is the framing. This is not a Miro or an Excalidraw. It is a drawing surface for one person in front of a class, with the classroom furniture built in, and the feature list says so directly. The audience is a teacher, a presenter, or a developer who wants to fork something small enough to hold in their head.

## The classroom tools are the differentiator

The feature overview is in two groups, and the second group is the interesting one. The first is the usual whiteboard capability set: a pen, shapes, an eraser, a background, illustrations, text insertion, and selection and editing. The second group is teaching assistance, described as complete, and it lists a clock display, a timer, random roll call, a scoreboard and teaching aids. Random roll call is the feature that tells you who this is for, because there is no equivalent in a general whiteboard tool, and a scoreboard and a clock serve a lesson rather than a brainstorm. The third group covers the realism of a teaching scenario: a paged canvas that can be added to and removed from, automatic save and restore, PWA, multiple languages, and configuration import and export. The last of those is quietly the most useful for a school, since it means a teacher can hand a colleague a configuration file and get the same board, and the default zoom ceiling has been raised to 1000 percent with an option to allow unlimited zoom beyond that. Dragging an object shows smart alignment guides that snap to other objects and to the canvas edges and centre lines, and that can be switched off in the canvas settings.

## Vanilla JavaScript, no framework, and a build you can skip

The stack is stated in the badges: vanilla JavaScript, HTML5 Canvas, and an i18n module listed at js/modules/i18n.js with eight languages. There is no framework and no bundler in the runtime path. The repository structure is the documentation of the design. index.html holds the main interface and static structure, js/main.js is the application controller and event orchestration, js/modules/ holds the time, timer, teaching aids, settings, storage, PWA and i18n modules, css/style.css and css/modules/ hold the main and per-module styles, and server.js with sw.js handle the local server, the version endpoint and the offline cache. The package manifest is correspondingly small, with a build script that runs a static build script and a start script that runs the server:

```json
    "build": "node scripts/build-static.js",
    "start": "node server.js",
    "test": "node scripts/run-tests.js core",
    "test:full": "node scripts/run-tests.js full",
```

There is also a smoke test script that chains two browser driven checks, one for drawing and one for responsive layout, and a version badge sync script that keeps the badge in the project documentation in step with version.txt. The dev dependencies are three build-time packages, a CSS minifier, an HTML minifier and a JavaScript minifier, which tells you the production build is a minify step rather than a compile. The scale of the dependency list is itself a design statement, and for a school network with limited bandwidth and a machine you do not control, a tool that loads from a single page with no framework runtime is a real advantage.

## Running it locally, and the one thing not to do

The quick start section is short. You can try the online version, or run it locally with npm start or node server.js, and then visit http://localhost:8080. The one warning is worth repeating because it is the kind of thing that wastes an afternoon. The project states that you should not double click index.html directly, because some of the multi-language, help and version check features depend on an HTTP environment. That is a consequence of the fetch calls and the service worker, and it is the same reason the project ships server.js. The server also serves the version endpoint the application uses for its update check, which is why it is not just a static file host. The deployment targets are the usual three for a static app with a server file, and all three are documented with buttons. Vercel gets a deploy button, Cloudflare Pages gets a deploy button, and GitHub Pages is a manual four step process, starting with forking the repository, going into the repository settings, choosing main as the source in the Pages options, saving and waiting for the deployment, then visiting the pages URL. The vercel.json file and the sw.js service worker in the repository are what make those two paths work.

## Zooming switches rendering strategy at high magnification

The one piece of engineering worth calling out is the high zoom behaviour, and it is the kind of detail that separates a whiteboard made for a classroom from one made for a mouse on a desk. At high magnification the application automatically switches to an SVG vector preview, so text, images, strokes and shapes stay legible when you zoom in to write a small annotation on a projected slide. That is a rendering strategy change, not a scale change, and it implies the canvas content is kept in a form that can be projected into an SVG representation. It also explains why the zoom ceiling could be raised to 1000 percent and why an allow unlimited zoom option exists. Two other details of the same kind. The project is designed touch first, with interaction buttons kept at a reachable area of at least 44 pixels, and responsive and touch were optimised specifically, with the toolbar, history bar, floating panels and editing overlay controls all prioritised for visibility and operability across 1366 by 768, 1920 by 1080, 2K, 4K and browser zoom levels. For very small images, text boxes, selections and stroke objects, the controls rearrange automatically and shrink when needed but keep a minimum size, so they do not drift far outside the object. The project documentation also gives advice to anyone continuing development, to reuse the existing responsive variables, media queries and the data-i18n-* mechanism rather than writing new fixed pixel absolute layouts.

## What it will not do, and what the project says about itself

Two boundaries are visible from the project description and the feature list. The first is that this is a single user board. There is no mention of multi-user collaboration, no shared cursors, no presence, and no account system, and the project emphasises that it has no server, which rules out the realtime features that require one. If you need a whiteboard that a team can work on together, this is not it, and the difference in approach between the two is not a feature gap, it is a different category of software. The second boundary is the design ceiling. The project calls itself a simple whiteboard, and while the classroom tooling is unusually complete for that description, there is no indication of a document model, layers, component libraries, or anything resembling a design tool. The honest summary is that Aboard does one thing well and does not attempt to be general. On the state of the code, the project is unusually candid. It describes itself as an AI agent project of uneven size, notes that because of the author's actual development ability the project makes heavy use of agent coding, and says plainly that the code may lack a human touch and may contain quite a lot of unreasonable bugs and development practices, asking readers to be gentle. The repository also carries a KNOWN_ISSUES.md file, and the version history shows a steady cadence with v2.5.5 on 2026-09-12, v2.5.6 on 2026-09-27 and v2.5.8 on 2026-10-11, and the last push was on 2026-10-11.

## Conclusion

Adopt Aboard if you teach on an interactive display and want a whiteboard that opens in a browser with no account, no server and no install, or if you want to fork a small, readable whiteboard you can extend. Do not adopt it for collaborative editing or as a design tool, since the project description and the feature list do not mention multi-user sessions or vector design. Before you deploy it, serve it over HTTP rather than opening the file directly, because the project states that some multi-language, help and version-check features depend on an HTTP environment.

## FAQ

### What is Aboard?

It is a lightweight web whiteboard built with vanilla JavaScript on the HTML5 canvas, aimed at classroom, presentation and large touch screen use. The stated goal is a whiteboard with simple features, simple deployment and very simple, intuitive use, designed primarily for secondary and primary school teaching machines.

### How do I run Aboard locally?

Run `npm start` or `node server.js` and open http://localhost:8080. The project warns against opening index.html directly by double clicking it, because some multi-language, help and version check features depend on an HTTP environment.

### Which classroom tools does Aboard include?

The teaching assistance set includes a clock display, a timer, random roll call, a scoreboard and teaching aids. The drawing side covers a pen, shapes, an eraser, a background, illustrations, text insertion, and selection and editing.

### Can I deploy Aboard to GitHub Pages or Vercel?

Yes. Vercel and Cloudflare Pages both have a deploy button, and GitHub Pages is a manual process: fork the repository, choose main as the source in the Pages settings, save, wait for the deployment, then visit the pages URL. The vercel.json file and the service worker sw.js are in the repository.

### Does Aboard support collaboration between multiple users?

Nothing in the project description or the feature overview mentions multi-user collaboration or accounts. The project emphasises that it has no backend and no signup, and the feature list covers a paged canvas, automatic save and restore, PWA support, multiple languages and configuration import and export.

## Sources

- [License: MIT](https://github.com/lifeafter619/Aboard/blob/main/LICENSE)
- [lifeafter619/Aboard on GitHub](https://github.com/lifeafter619/Aboard)
- [Project website](https://aboard.pp.ua)
- [README](https://github.com/lifeafter619/Aboard/blob/main/README.md)
- [Releases](https://github.com/lifeafter619/Aboard/releases)

---

Hysen Labs editorial analysis, written from the project's own repository and release notes. Cite the canonical page: https://hysenlabs.com/projects/lifeafter619-aboard
