Skip to content
🤷

Forgive us! These docs are a work in progress. Some pages may be incomplete or describe features that aren't quite finished yet. Farkitect is in early development and we don't recommend using it for real work just yet. Feel free to explore — just be aware that things are still being built.

Notation System Reference

Farkitect’s notation model (format farki/1.2) treats appearance as a set of independent compositional primitives. shape controls only the outline; fill, border, body content, icon, and label placement are separate fields that combine freely. This replaced the older model where a handful of fixed shapes (note, boundary, text) each baked in their own fill and border.

shape is the silhouette (outline) only:

ShapeDescriptionTypical Use
rectangleSquare cornersMost element types
roundedRounded cornersActive elements, processes
pillFully rounded endsTags, states
chamferedCut cornersArtifacts, cut-corner boxes
ellipseEllipse / circleBPMN events, start/end nodes
diamondDiamondGateways, decisions

The legacy note, boundary, and text looks are now compositions of a rectangle plus primitives (a folded corner; a dashed border with no fill; no border and no fill).

FieldValuesDescription
fillModesolid / noneWhether the body is filled with color or transparent
borderStylesolid / dashed / dotted / noneOutline stroke style
bodyContentname / notes / imageWhat fills the node body (see below)
showIconBooleanWhether the type icon is drawn
foldCornerBooleanDraw a folded top-right corner (the Note look)
labelPlacementinside / outsideWhere the element name sits (see below)
ValueMeaning
nameThe element name (default)
notesThe element’s notes text (text-annotation style)
imageThe element’s attached image fills the body, letterboxed. Requires the type to declare attachment: "image". Shows a dashed “No image” placeholder until an image is uploaded.
ValueBehaviour
insideDefault. Name sits inside the body; the type icon is small in the top-right corner (ArchiMate/UML convention).
outsideThe icon renders centred and scaled in the body, and the name renders as an external, draggable label below the node (BPMN convention for events, gateways, data objects).

labelPlacement: outside is for icon-centric symbols where the icon is the symbol. It is ignored when the type has compartments (compartmented boxes are always inside-labelled). Set it in the M2 Notation Editor via the Label Placement dropdown; the canonical form omits the field when inside.

Set on an M2 element type to turn on the attachment facility for its instances:

FieldValuesDescription
attachmentimage / fileEnables a single attachment per instance; picks the Properties-panel label, file filter, and size limit (image → images ≤ 4 MB, file → any type ≤ 20 MB)
containmentmodel / visual / noneHow the node hosts children. none (used by Image) makes it a pure backdrop — dropped elements are never nested, moved, or resized by it

A property whose format is "url" renders as a live clickable link on diagram nodes — this is how the Hyperlink type works, and it applies to any metamodel.

FieldTypeDescription
type"relationship"Always “relationship”
iconString (SVG)Icon for palette and explorer
lineStylesolid / dashed / dottedEdge line style
sourceMarker / targetMarkerMarkerEnd markers (see below)
colorString (hex)Default edge colour
s2tVerbStringSource-to-target verb (e.g., “serves”)
t2sVerbStringTarget-to-source verb (e.g., “is served by”)
showMultiplicitiesBooleanDisplay multiplicity labels
showRoleNamesBooleanDisplay role name labels

A marker is a shape plus an optional fill:

Marker shapeFill applies?
none
arrow (open stick arrow)No
triangle (closed head)Yes — filled or hollow
diamondYes
circleYes
barNo

Compartments define sections within a diagram node.

FieldTypeDescription
contentTypename / properties / subordinatesWhat to display
idStringUnique compartment identifier
labelStringHeading text (for subordinate compartments)
showLabelBooleanWhether to display the heading
subordinateTypeIdStringReferences a subordinate type (when contentType = “subordinates”)
styleObjectCSS-like style overrides (fontWeight, etc.)

Define owned element types that render inside compartments.

FieldTypeDescription
idStringUnique identifier referenced by compartments
labelStringDisplay label
classifierString$id of the owned element type
displayTemplateStringTemplate for rendering (e.g., {name} : {Data Type})

Label placement is an M2 (author) decision; whether a specific label shows is an M1 (per-diagram) decision:

SettingScopeWhere
Hide Label / Show LabelPer nodeNode context menu (and a batch action for multi-select)
Hide Label / Show LabelPer edge (main label)Edge or edge-label context menu
Show/Hide relationship labelsWhole diagram (edges)Diagram toolbar

The per-edge toggle is subtractive — it can hide an edge’s label when the diagram shows labels, but cannot force one on when the diagram-level switch is off. Hiding a label is a content decision, so it is not cleared by “Revert Format to Default”. External (outside-placement) labels can also be dragged and resized; their per-diagram position and size persist with the diagram.

Stereotypes display the M2 type name on diagram nodes (e.g., <<Application Component>>). Visibility is toggled per-diagram via the diagram toolbar.

  • M2 notation colour — the default fill colour for all instances of a type
  • M1 diagram override — per-element, per-diagram colour override
  • Revert — removes the override, restoring the M2 default
  • Colours are specified as hex strings (e.g., #81D4FA)