Hosted onhoraciohdev.dev.hyper.mediavia theHypermedia Protocol

Persist the Board as a board-owned Seed document at a reserved, hidden path, not inside the home document and not as local UI state.

Reserved path:

/:apps/board

Then the public Board URL stays:

/:board

But internally, it loads/saves the Board state from that reserved document.

{ "version": 1, "query": { "includes": [ { "space": "site-uid", "path": "design", "mode": "AllDescendants" } ], "sort": [ { "term": "UpdateTime", "reverse": true } ], "limit": 50 }, "workflow": { "columns": [ { "id": "backlog", "title": "Backlog" }, { "id": "ready", "title": "Ready" }, { "id": "in-progress", "title": "In Progress" }, { "id": "review", "title": "Review" }, { "id": "done", "title": "Done" } ], "cards": { "hm://site-uid/design/example-doc": { "columnId": "backlog", "labels": ["UI", "Research"], "assignees": ["account-uid-1"], "dueDate": "2026-06-30", "priority": "High" }, "hm://site-uid/design/another-doc": { "columnId": "review", "labels": ["Docs"], "assignees": [], "dueDate": null, "priority": "Medium" } } } }


Key idea:

    Query computes which documents appear.

    Board state stores how those documents are arranged.

    The Board does not store duplicate document cards.

    Card overrides are keyed by document ID/path.

Why this is best:

    Uses Seed’s existing document persistence, sync, publishing, identity, and permissions.

    Works on desktop and web.

    Does not require the home document to link to the Board.

    Keeps /:board as an AppView, not a normal document page.

    Avoids inventing a separate daemon database right now.

I would avoid daemon-only persistence for now because then published web Boards will not reliably work.

Recap

Persist the Board in a hidden/reserved Seed document like /.seed/board, while keeping the user-facing route as /:board. Store the query definition and workflow overrides there; compute cards dynamically from the query.

version: 1

query

includes

space: site-uid

path: design

mode: AllDescendants

sort

term: UpdateTime,

reverse: true

limit: 50

workflow

columns

id: backlog

title: Backlog

id: ready

title: Ready

id: in-progress

title: In Progress

id: review

title: Review

id: done,

title: Done

cards

hm://site-uid/design/example-doc

columnId: backlog

labels: UI, Research

assignees: account-uid-1

dueDate: 2026-06-30

priority: High

hm://site-uid/design/another-doc

columnId: review

labels: Docs

assignees:

dueDate: null

priority: Medium

Do you like what you are reading? Subscribe to receive updates.

Unsubscribe anytime