Patterns
Share a collection
Publish a reading-only collection while keeping management private.
On this page
Task sequence
- Open an unlocked board editor.
- Review title, description and every included destination.
- Enable Public and save.
- Use /board/[id] as the share route.
Data and persistence
The public route validates ID format and fetches only an isPublic board. Links are fetched for that board. It uses the owner accent and viewer system theme. Avatar-backed identity is conditional.
Failure and recovery
Private, invalid and missing IDs lead to notFound. B2 avatar failure hides the owner row rather than blocking the collection. Revoking visibility is a separate board update.
Acceptance criteria
- Never include private URLs in a shared collection.
- Do not conflate /boards/[slug] with the public route.
- Local fixture URLs must not be copied as working public shares.
Source references
| Repository file | Responsibility |
|---|---|
| app/board/[id]/page.tsx | Read route |
| app/settings/boards/BoardsList.tsx | Visibility editor |
| app/api/boards/route.ts | Update |
Examples from the app
Actual Startboard source UI with isolated fictional records; both native themes at 2× resolution or higher. No live integrations or account writes. Captured at 2× resolution or higher. Select an image to inspect it full size.
Related topics
Source audit: 2026-10-08 · Revision 08fa2595a668 · Documentation v1.0.0