Appearance
NotaBoard
Prov1.0.1A whiteboard for notes, sketches and quick diagrams
NotaBoard is a Pro app
It needs a free KimtOS account and a Pro subscription. Everything still runs on your device — Pro unlocks the app, it does not send your data anywhere. Install it without Pro and the app opens to an upgrade wall. See what Pro includes
Overview
NotaBoard is an infinite whiteboard for notes, sketches, and quick diagrams — in the style of Notability. You draw with a pen, drop shapes, text, and sticky notes, paste in images, and organize everything into named boards. It is part of the kimtos new-tab app suite.
Everything is fully on-device. There is no backend, no account, and no network: every board, stroke, and image lives in your browser's IndexedDB and never leaves the machine.
Highlights
- Drawing tools — pen, highlighter, and an object eraser.
- Shapes — line, arrow, rectangle, and ellipse, with optional fill and
Shiftto constrain (straight lines, perfect squares/circles). - Text & sticky notes — click to place, type inline; notes come in five pastel colors.
- Images — insert from a file or paste straight from the clipboard.
- Selection — move, resize (corner handles), marquee-select many at once, duplicate, and re-order (bring to front / send to back).
- Boards — a sidebar of boards, each with a live thumbnail; rename, and batch-delete with one-tap undo.
- Canvas navigation — pan (hold
Spaceand drag, or middle-drag), zoom (⌘/Ctrl+scroll), fit-to-content, and a navigator minimap for jumping around large boards. - Paper & theme — grid, dots, ruled, or plain paper, in a light or dark theme.
- Full screen — a distraction-free mode that fills the whole display.
- Export — save any board as a PNG.
- Home card — an optional card on the KimtOS home screen listing your recent boards; click one to open it, or start a new board. Turn it off in Settings ▸ Preferences.
Privacy model
NotaBoard writes only to local browser storage:
- Boards (title, scene, paper, theme, thumbnail) are records in IndexedDB.
- Inserted images are stored as binary blobs, keyed per board.
- Nothing is uploaded, and there are no analytics or third-party calls.
Because each board carries its own scene as plain serializable data, your work is portable — it travels with the browser profile and is included in the suite's local Export / Import backup.
Getting Started
Open NotaBoard from the dock. On first run it shows a welcome panel — click Create your first board to begin. After that, the most recent board opens automatically.
Boards
The left sidebar lists your boards, each with a thumbnail and last-edited time.
- New board — the + button in the sidebar header.
- Open — click a board card.
- Rename — double-click a card and type a new name (you can also edit the title above the canvas).
- Delete one — right-click a board card and choose Delete, then confirm. A toast lets you undo for a few seconds.
- Delete several — click Select, tick the boards, then Delete (N). A toast lets you undo for a few seconds.
Every change autosaves a moment after you stop, and the board's thumbnail refreshes automatically.
The tool bar
NotaBoard uses a single slim tool bar. The left side holds the tools; the right side holds undo/redo, arrange/delete, zoom, page setup, and export.
Color and thickness are not shown inline. Instead, tap an active drawing tool a second time to open its style popover — exactly like Notability:
- Click the pen to select it.
- Click the pen again to open its popover.
- Pick a color and a thickness.
Each drawing tool shows its current color as a small underline, so you can tell your pen, highlighter, and shapes apart at a glance.
Drawing and editing
- Pen / highlighter — drag to draw. The highlighter is translucent and thick.
- Shapes — drag to size. Hold
Shiftto constrain (straight line, square, circle). Rectangles and ellipses can be filled from their popover. - Eraser — drag across elements to remove them.
- Text — pick the text tool, click the canvas, and type. Press
⌘/Ctrl+Enteror click away to commit; double-click later to edit. - Sticky note — pick the note tool (choose a color from its popover), click to drop a note, and type.
- Image — click the image button to pick a file, or just paste an image onto the canvas.
Selecting and arranging
Switch to the Select tool (or press V):
- Click an element to select it; drag to move it.
- Drag a corner handle to resize a single selection.
- Drag on empty canvas to marquee-select several elements.
- Arrange with bring-to-front / send-to-back; delete with the trash button or the
Deletekey.
Navigating the canvas
- Pan — hold
Spaceand drag, or middle-drag. - Zoom —
⌘/Ctrl+scroll, or the zoom controls. Click the % to reset to 100%; Fit frames all your content. - Navigator — the minimap in the bottom-right shows the whole board with a viewport box; click or drag it to jump around. Toggle it in Page setup.
Page setup, full screen, and export
- Page setup (the sliders button) sets the paper style, the light/dark theme, and toggles the navigator.
- Full screen fills the entire display for focused work. The control is in the window header, next to maximize — every app has it, not just this one. Press
Escor the button again to exit. Going full screen here also collapses the boards sidebar to give the canvas the room; the burger reopens it. - Export saves the current board as a PNG.
Architecture
NotaBoard follows the suite convention: all data logic lives behind the local API layer, and the app itself is UI plus a self-contained canvas engine. The code lives in extension/src/apps/notaboard/.
Modules
| File | Role |
|---|---|
index.ts | The app descriptor and UI — boards sidebar, the slim tool bar, the style/page popovers, image insert, and autosave. |
engine.ts | The canvas engine — a retained-mode scene, rendering, pointer gestures, undo/redo, the in-place text editor, the minimap, and PNG/thumbnail export. |
geometry.ts | Pure, DOM-free scene primitives — element bounds and rigid transforms (translate/scale), plus hit-test maths. |
notaboard.local.ts | The data layer — board CRUD over IndexedDB, registered on the local API router. |
Data flow
The UI never touches storage directly: it calls getApi / jsonApi (the suite's local router), which dispatches to notaboard.local.ts. Inserted image blobs are written through the shared data store. The canvas engine is pure UI state — it tells the UI when something changed via an onChange callback, and the UI debounces a save.
The scene model
A board's drawing is a flat, serializable array of elements. Array order is z-order (later elements paint on top). There are two geometry families:
- Point-based —
stroke(pen/highlighter),line,arrow. They carry apoints: [{x, y}]list. - Box-based —
rect,ellipse,text,note,image. They carryx, y, w, h.
The
classDiagramabove is a quick reference. Because every element is plain data with no DOM or image references, a board can be cloned, diffed, undone, and saved as one JSON blob.
Rendering
The engine draws the whole scene to a single <canvas> once per animation frame, under a pan/zoom transform, in world coordinates:
screen = world * scale + offsetDrawing is dirty-flagged: mutations call requestRender(), which coalesces work into one requestAnimationFrame. Inserted images are cached as HTMLImageElement objects keyed by blob key and resolved lazily.
geometry.ts keeps the engine honest: bounds, translate, and scale are pure functions over the element data, identical whether they run for hit-testing, selection handles, the minimap, or export.
History, editor, and export
- Undo / redo snapshots the element array before each committed gesture (capped depth), so any change is reversible.
- The text/note editor is a real
<textarea>overlaid on the canvas at the element's screen position; on commit it writes back into the scene. - Export & thumbnails reuse the same draw routines against an off-screen canvas, so a PNG (or the sidebar thumbnail) is pixel-faithful to the board.
Persistence
Each board is one IndexedDB record:
{ id, title, elements[], paper, theme, thumb (dataURL), created, updated }Saves are debounced (~700 ms) and also write a fresh thumbnail. Deleting a board removes its record and purges its image blobs. Reopening the app restores the most recently edited board and renders it straight from storage.
Reference
A quick reference for tools, keyboard shortcuts, and settings.
Tools
| Tool | Shortcut | What it does |
|---|---|---|
| Select | V | Select, move, resize, and marquee-select elements. |
| Pen | P | Freehand drawing. |
| Highlighter | H | Translucent, thick freehand. |
| Eraser | E | Drag across elements to remove them. |
| Line | L | Straight line. |
| Arrow | A | Line with an arrowhead. |
| Rectangle | R | Rectangle, optionally filled. |
| Ellipse | O | Ellipse, optionally filled. |
| Text | T | Click to place a text box and type. |
| Sticky note | N | Drop a colored sticky note and type. |
| Image | — | Insert from a file, or paste from the clipboard. |
Tap an active pen, highlighter, shape, text, or note tool a second time to open its color/thickness popover.
Keyboard shortcuts
| Keys | Action |
|---|---|
V P H E L A R O T N | Pick a tool |
⌘/Ctrl + Z | Undo |
⌘/Ctrl + Shift + Z (or ⌘/Ctrl + Y) | Redo |
⌘/Ctrl + A | Select all |
⌘/Ctrl + D | Duplicate selection |
Delete / Backspace | Delete selection |
Shift (while drawing a shape) | Constrain — straight line, square, circle |
Space + drag | Pan the canvas |
⌘/Ctrl + scroll | Zoom in / out |
Esc | Close a popover, finish editing, or exit full screen |
Page setup
Opened from the sliders button on the tool bar.
| Setting | Options |
|---|---|
| Paper | Grid, Dots, Lines, Plain |
| Theme | Light, Dark |
| Navigator | Shown, Hidden |
Paper and theme are saved per board.
Tool-bar actions
| Control | Action |
|---|---|
| Undo / Redo | Step backward / forward through history |
| Bring to front / Send to back | Re-order the selection |
| Delete | Remove the selection |
| Zoom out / % / Zoom in | Zoom; click the % to reset to 100% |
| Fit | Frame all content in view |
| Page setup | Paper, theme, navigator |
| Full screen | Fill the display; Esc or click again to exit |
| Export | Save the board as a PNG |
Data & storage
| Item | Where it lives |
|---|---|
| Boards (scene, paper, theme, thumbnail) | IndexedDB records |
| Inserted images | IndexedDB blobs, keyed per board |
| Backup | Included in the suite's local Export / Import |
Deleting a board also deletes its images. Nothing is ever uploaded.
Changelog
1.0.1 — 2026-07-22
- Deleting one board now offers Undo, like deleting several does.
- A board delete that fails now says so, instead of reporting success and hiding the board.
1.0.0 — 2026-07-06
- Initial release.