FW

fancy-whiteboard

@particle-academy/fancy-whiteboard

Transport-agnostic collaborative board — sticky notes, freeform pen, connectors, presence cursors.

TSUI · 6 components6 components
$npm install @particle-academy/fancy-whiteboard
Authoring surface
Humans compose it

Controlled value + onChange, JSON-friendly props, terse defaults — so people (and agents) build it fast.

Inhabited surface
Agents drive it over MCP

A bridge in @particle-academy/agent-integrations exposes typed tools — agents read and mutate state through stable handles, never DOM scraping.

whiteboard_paintwhiteboard_add_notewhiteboard_move
Why
Most whiteboarding libraries force opinionated realtime transports, lock you into their collaboration layer, or demand heavyweight React dependencies. Building a team tool that agents can read and write (sticky notes, shapes, strokes) without DOM scraping requires stable item IDs and controlled state throughout—not buried in component closures. fancy-whiteboard fills that gap: a canvas-agnostic primitives library that pairs human authoring ergonomics with agent-bridgeable surfaces.
What
Export six headline components: Board (pan/zoom viewport), StickyNote (draggable, resizable colored notes), Drawing (freeform stroke layer), Connector (SVG edges between world-space points), Shape (rect, ellipse, diamond, arrow, text, etc.), and Cursor / CursorLayer (remote-user presence pointers). Every stateful component is controlled via item + onChange; Board itself supports both controlled and uncontrolled viewport modes. Item types—StickyNoteItem, ShapeItem, ConnectorItem—are JSON-friendly objects with stable id, world coordinates (x, y, z), and optional authorId for presence; the Drawing layer accepts a controlled stroke list. Requires peer @particle-academy/react-fancy (v3.4.0+) since StickyNote delegates styling to that shared primitive.
How
Install via npm install @particle-academy/fancy-whiteboard @particle-academy/react-fancy, then import both stylesheets and use Board as the root container: import { Board, StickyNote, CursorLayer } from '@particle-academy/fancy-whiteboard'; import '@particle-academy/fancy-whiteboard/styles.css'; import '@particle-academy/react-fancy/styles.css'; Wire state via useState and pass item + onChange to each note; feed your realtime transport (Echo, Yjs, raw WebSocket) through onChange to broadcast mutations and reload state from peers.

Components

6 components · click any tile for a full demo, source, and install snippet.

BoardOpen →
Q3 OKRs
Ship v0.4
Audit
Root canvas component.
StickyNoteOpen →
Ship the preview grid ✨
Sticky note item type.
CursorLayerOpen →
Plan
Ava
Sky
Multi-user cursor presence.
ConnectorOpen →
Edge between items.
ShapeOpen →
Geometric shapes.
DrawingOpen →
Freeform pen strokes.