# Sprint Planning Board block

> Excalidraw Sprint Planning Board with Capacity Lanes, Presence, Follow Mode and Decision Log

Excalidraw sprint planning room for shadcn/ui: lane frames that total story points against capacity as you drag cards, owner portraits, presence outlines with name tags, follow and present modes, and a decision log linked to the canvas.

- Type: Pro block
- Category: [Whiteboard](https://web.dev.reui.io/blocks/application/whiteboard.md)
- Page: https://web.dev.reui.io/blocks/application/whiteboard/whiteboard-2
- MCP: `get_block("whiteboard-2")`
- Built with: Alert Dialog, Avatar, Badge, Button, Button Group, Dialog, Dropdown Menu, Empty, Field, Icon Tile, Input Group, Item, Kbd, Progress, Separator, Sheet, Skeleton, Spinner, Tabs, Toggle, Toggle Group, Tooltip
- Installs with a ReUI Pro or Ultimate license; setup: https://web.dev.reui.io/docs/license-setup

## Best for

A sprint planning room with planning poker votes on a card, lane point totals against capacity and a plan summary copied as Markdown

## Agent notes

- `SPRINT_SCENE` draws the sample lanes and cards, and `PEOPLE`, `CAPACITY` and `LANE_META` in data.tsx hold the owners and capacities to replace
- `ROOM` is a fixed roster mapped into `setCollaborators`, and `seededVotes` fakes the other ballots from `VOTE_SEED` or an id hash, so neither is live
- `logEntry`, `toggleDone` and `removeEntry` only change local `log` state seeded from `LOG_SEED`, and `copyInvite` copies the placeholder `BOARD.inviteUrl`

## When not to use

- Sprint tickets listed as rows of assignee, priority and status, with nothing to draw on: use [Table](https://web.dev.reui.io/components/table.md) (`get_component("table")`)
- Tickets moved through stage columns by drag and drop, with no lane capacities to compare: use the [Kanban Board blocks](https://web.dev.reui.io/blocks/application/kanban-board.md)

## Third-party libraries

- Excalidraw: [API reference](https://docs.excalidraw.com/docs/@excalidraw/excalidraw/api), [docs](https://docs.excalidraw.com/docs/@excalidraw/excalidraw/integration)
- Motion v12: [API reference](https://motion.dev/docs/react-motion-component), [docs](https://motion.dev/docs/react) (the docs follow the latest Motion, with no React API break since v12)
- Sonner v2: [API reference](https://sonner.emilkowal.ski/toast), [docs](https://sonner.emilkowal.ski/getting-started)

## Install

```bash
npx shadcn@latest add @reui/whiteboard-2
```

## About Whiteboard blocks

### When to use

- Design reviews, retros and user flow sketches on a hand drawn canvas inside your product
- Sprint planning on a shared canvas where lanes of cards total their points against capacity
- An Excalidraw editor themed by your shadcn tokens that autosaves and opens or saves board files

### When not to use

- A bordered panel with a header band around dense data, with nothing to draw on: use [Frame](https://web.dev.reui.io/components/frame.md) (`get_component("frame")`)
- An editable graph of connected steps, each with its own settings inspector: use the [Flow blocks](https://web.dev.reui.io/blocks/application/flow.md)
- Sprint work as cards dragged between stage columns, with no drawing canvas: use the [Kanban Board blocks](https://web.dev.reui.io/blocks/application/kanban-board.md)

### Agent notes

- `loadBoard` returns a demo scene and `saveBoard` only waits on a timer; wire both to your storage, as `onSave` hands over the whole scene
- Pin `@excalidraw/excalidraw` to 0.18.1: later releases rename the API and the editor DOM that the `Whiteboard` kit hides and proxies
- Each page.tsx gives the board an `h-svh` wrapper and the board fills its parent; inside an app shell give that parent a height in place of it

Every ReUI item has a twin like this one; the index is https://web.dev.reui.io/llms.txt. Agents with the ReUI MCP (https://web.dev.reui.io/docs/mcp) get the same guidance from the getters named above.
