Skip to content
On this page

Nodes & Edges

A board is a graph drawn as shapes and lines. Nodes are the things your system is made of, and edges are claims about how they relate.

The element kinds

A canvas holds eight element kinds. Only two of them, nodes and edges, model the system itself.

KindWhat it isUse it when
NodeA discrete thing, such as a service, database, queue, or decisionYou are naming something that exists
EdgeA relationship between two nodesYou are describing a dependency, call, or flow
ContainerA bounded group with explicit edges, holding elements inside itYou are drawing a domain, team, or compliance zone
RegionA soft grouping or swimlaneYou are marking a tier or zone that is not a boundary
AxisA dimensional scaleYou need a timeline, a cost scale, a maturity ladder
CalloutA focused annotation attached to an elementOne element needs a warning or a note beside it
TextA paper note pinned to the boardThe board needs a title or an explanation
DecorateHand-placed markup: a stamp, brace, pin, marker, index card or highlighterYou want to mark something up the way you would on a whiteboard

Containers and regions look alike and mean different things. A container claims ownership: what is inside belongs to it. A region only groups elements visually, to help someone read the board.

Archetypes type them

An element kind says how something behaves on the canvas. An archetype says what it is: "API Gateway", "PostgreSQL", "Message Queue".

An archetype defines shape and size, fill and stroke, and containment rules. For an edge it also defines the connection shape and markers.

Your workspace starts with a built-in library, and you can add your own archetypes. Containment rules say what may sit inside what: a domain accepts systems, a system accepts services, and the canvas refuses an invalid drop.

Colour means something

Fill and stroke are not free-form hex values. Each is a {colour family, weight} token pair: one of a fixed set of families, shared by related archetypes, plus a weight for how strongly it renders. A colour can then mean "data store" across a workspace. The canvas has no colour legend.

What a node stores

Beyond its name and archetype, a node stores:

  • Fields: attributes defined by the archetype and filled in per node. Field templates are set once for the org, so every node of a kind asks for the same facts.
  • Context tags: semantic labels for slicing a board, such as migration scope, owning team, or deprecation status.
  • Aspects: typed architecture detail a node owns on an app board, pushed from the repo, such as a database schema, API surface, or route surface. The node names the thing; the aspect describes its internals.
  • A parent: nodes nest, so a service can sit inside the container that owns it and stay with it.
  • A child layer: a whole board of its own, one click deeper, for when a node's internals need their own map.

Edges

Every edge has a direction, a source node, a target node and a relation label: Payment Service calls User Database. You pick the label, or a governing source picks it during sync.

The markers its archetype sets on each end show the kind of relationship: an arrow that points, a marker that terminates, or a plain line that only associates.

Direction matters: an insight's traced path follows the arrows exactly as drawn.

Drawn, kept, and bundled

A code plugin push keeps every relationship it finds, but a board draws only some of them. Each board draws its strongest import edges up to a board-wide edge budget. A hub also draws its strongest consumers, up to its own limit.

Watch: reading a busy board, from direction and weight to bundles and the edge lens

Relationships outside the budget stay available. A hub node lists its undrawn consumers under Used by in its documentation panel, strongest first, with the symbols each one imports. The plugin also keeps every resolved pair on your local disk.

When several child connections run between the same drawn pair of containers, the canvas combines them into one line. A ×N chip shows the count, and the combined import weight sets the line's thickness. Select the line to expand its members.

On a drill-down board, an import that leaves the board's scope ends at a boundary port. This ghost node carries the name of the parent-board node the import reaches, and its badge opens that node on the parent board.

Edges follow the routes the layout computes. When you drag a node, its edges move freely until the next layout.

A line shows its edge's weight: one or two imports draw thin and dotted, ten or more draw solid and heavy.

Selection is focus. When you select a node, the canvas keeps that node, everything inside it and the nodes its drawn edges reach at full strength, and fades the rest. When you select an edge, its two ends stay at full strength. Press Escape or click the canvas to clear the selection. An open insight trail takes precedence and highlights exactly the edges it follows.

The edge lens at the bottom-left of the canvas filters edges across the whole board. The page link carries the lens (?edges=), so a shared layer opens with the same lens:

LensWhat draws
AllEvery drawn edge. The default.
StrongOnly edges with three or more imports, so the dotted lines disappear. Edges you drew yourself carry no weight and always stay.
BundlesThe board at container level: edges between siblings inside one container are hidden, leaving the ×N bundles and the top-level lines.

The lens only sets what draws by default: a selection or an open trail always draws the edges it names.

Managing the library

You add and edit archetypes, and review the ones a plugin proposes, in one place. Archetypes covers the catalogue, its form, and how a colour change applies to boards that already exist.

What's next