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
CardPositionChangedPresentation
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
DeleteColumnCards
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
OpenCardUpdates Private State
The Board updates its internal workflow state. This includes:
Workflow
Card organization
Board metadataMay 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
DocumentsRemovedMessage Flow
Board
OpenCard
↓
Document
Open
↓
Board View
RenderDo you like what you are reading? Subscribe to receive updates.
Unsubscribe anytime