Skip to content

NotaBoard

Prov1.0.1

A 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 Shift to 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 Space and 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:

  1. Click the pen to select it.
  2. Click the pen again to open its popover.
  3. 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 Shift to 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+Enter or 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 Delete key.
  • Pan — hold Space and 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 Esc or 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

FileRole
index.tsThe app descriptor and UI — boards sidebar, the slim tool bar, the style/page popovers, image insert, and autosave.
engine.tsThe canvas engine — a retained-mode scene, rendering, pointer gestures, undo/redo, the in-place text editor, the minimap, and PNG/thumbnail export.
geometry.tsPure, DOM-free scene primitives — element bounds and rigid transforms (translate/scale), plus hit-test maths.
notaboard.local.tsThe 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-basedstroke (pen/highlighter), line, arrow. They carry a points: [{x, y}] list.
  • Box-basedrect, ellipse, text, note, image. They carry x, y, w, h.

The classDiagram above 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 + offset

Drawing 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

ToolShortcutWhat it does
SelectVSelect, move, resize, and marquee-select elements.
PenPFreehand drawing.
HighlighterHTranslucent, thick freehand.
EraserEDrag across elements to remove them.
LineLStraight line.
ArrowALine with an arrowhead.
RectangleRRectangle, optionally filled.
EllipseOEllipse, optionally filled.
TextTClick to place a text box and type.
Sticky noteNDrop a colored sticky note and type.
ImageInsert 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

KeysAction
V P H E L A R O T NPick a tool
⌘/Ctrl + ZUndo
⌘/Ctrl + Shift + Z (or ⌘/Ctrl + Y)Redo
⌘/Ctrl + ASelect all
⌘/Ctrl + DDuplicate selection
Delete / BackspaceDelete selection
Shift (while drawing a shape)Constrain — straight line, square, circle
Space + dragPan the canvas
⌘/Ctrl + scrollZoom in / out
EscClose a popover, finish editing, or exit full screen

Page setup

Opened from the sliders button on the tool bar.

SettingOptions
PaperGrid, Dots, Lines, Plain
ThemeLight, Dark
NavigatorShown, Hidden

Paper and theme are saved per board.

Tool-bar actions

ControlAction
Undo / RedoStep backward / forward through history
Bring to front / Send to backRe-order the selection
DeleteRemove the selection
Zoom out / % / Zoom inZoom; click the % to reset to 100%
FitFrame all content in view
Page setupPaper, theme, navigator
Full screenFill the display; Esc or click again to exit
ExportSave the board as a PNG

Data & storage

ItemWhere it lives
Boards (scene, paper, theme, thumbnail)IndexedDB records
Inserted imagesIndexedDB blobs, keyed per board
BackupIncluded 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.