Hosted onhoraciohdev.dev.hyper.mediavia theHypermedia Protocol

Board ConceptsI would derive the concepts by asking: What nouns have identity and behavior? Not "column" because Trello has columns. Not "status" because Jira has status. Instead, identify the stable concepts in the domain.

Core Actors

This document defines the fundamental objects that make up the Board AppView.

An actor is an autonomous entity with its own identity, private state, and behavior. Objects collaborate by exchanging messages rather than exposing their internal state.

We discover actors by identifying autonomous responsibilities. An actor has exactly four responsibilities:

    It has a purpose.

    It has its own identity

    It receives messages.

    It updates its private state.

    It may send messages or spawn other actors.


Board Actor

The purpose is to coordinate work by organizing Documents into a workflow.

It provides a shared workflow in which Documents can be represented as Cards. A Board coordinates planning, prioritization, and execution without becoming the owner of the underlying knowledge.

A Board can exist independently, be shared with others, and evolve over time.

Receive PositionCard ↓ Update Workflow ↓ Emit CardPositionChanged

Presentation

The Board is rendered through a Board View. A Board View is the visual representation of a Board. It renders Documents as Cards and organizes them into Columns according to the Board's workflow. The Board View exists to support interaction. It is not itself the source of truth.

The Board View presents:

    Columns

    A Column is a visual grouping of Cards within a Board. Columns represent stages in a workflow and help users understand the current state of work. Columns exist only within the context of a Board.

    Cards

    A Card is the representation of a Document within a Board. A Card allows a Document to participate in a workflow without changing the Document itself. Multiple Cards may represent the same Document across different Boards.

Receives Messages

Columns

A Column is not an actor. A Column is part of the Board's private workflow state.

CreateColumn RenameColumn MoveColumn ArchiveColumn DeleteColumn

Cards

A Card is not necessarily an actor. A Card is the Board's representation of a Document inside its workflow.

AddCard RemoveCard PositionCard Place a Card into a specific Column and position. AssignCard LabelCard SetCardDueDate OpenCard

Updates Private State

The Board updates its internal workflow state. This includes:

Workflow Card organization Board metadata

May Send Messages

    OpenDocument

    PreviewDocument

    NotifyParticipants

    RefreshQuery

May Spawn

    Query actors

Document

A Document is an object whose purpose is to capture, organize and evolve knowledge.

Documents are the fundamental units of information in Seed. They have their own identity, history and conversations, and can exist independently of any AppView.

A Document may appear simultaneously in multiple Boards without being duplicated.

Query

A Query is an object whose purpose is to continuously compute a set of Documents.

Rather than storing Documents, a Query continuously identifies the Documents that satisfy a particular set of conditions. Queries enable AppViews to become dynamic and automatically adapt as knowledge changes.

The same Query may be reused by multiple AppViews.

Receive UpdateDefinition Refresh DocumentChanged ↓ Compute ↓ Emit DocumentsAdded DocumentsRemoved

Message Flow

Board OpenCard ↓ Document Open ↓ Board View Render

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

Unsubscribe anytime