Foundations
Content and state model
Boards group ordered links; preferences personalize the workspace; profile metadata belongs to public identity.
On this page
Core records
| Record | Fields that shape UI |
|---|---|
| Board | id, title, slug, description, icon, isPublic, isLocked, position |
| Link | id, boardId, label, url, icon, position |
| Preferences | searchEngine, aiAgent, themePreference, currentBoardId, accentColor, backgroundImage |
| Profile | displayName, avatarFileName / avatar URL |
| Credentials and tokens | Verified email, password hash, expiring verification/reset tokens |
Ownership and defaults
Database operations are scoped to userId. The home board is seeded and locked, remains the default fallback, and cannot be managed like ordinary boards. Board and link IDs are 24 hexadecimal characters. Positions encode ordering independently of titles.
The description editor caps text at 120 characters. Source board routes sanitize descriptions on the server. Do not silently add descriptions or icons to the data contract where the source has not returned them.
Fixtures
Documentation uses Morgan Ellis, morgan@example.com, seven boards and reserved-domain links. A mix of icon-backed bookmarks and an initial fallback illustrates real states. Those records are not a production account or proof of persistence.
Source references
| Repository file | Responsibility |
|---|---|
| lib/startboard-data.ts | Record types, defaults and scoped queries |
| lib/ids.ts | ID contract |
| lib/user-data.ts | Profile and credential records |
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