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 and Visual Language

One of Farkitect’s core design principles is the separation of model semantics from visual representation. What something is (its type, properties, relationships) is separate from what it looks like on a diagram (its shape, colour, icon). The notation system bridges the two.

Every M2 element type includes a notation definition that specifies:

PropertyWhat it controlsExample
ShapeThe geometric form of the noderectangle, rounded, note, boundary, text
ColourThe default fill colour#81D4FA (light blue)
IconAn SVG icon displayed on the node and in the ExplorerA user silhouette, a database cylinder
Default width/heightThe initial size when placed on a diagram160 x 80 pixels
StereotypeA label showing the type name (e.g., <<Application Component>>)Can be shown or hidden per diagram
CompartmentsSections within the node for name, properties, owned elementsName compartment, properties compartment

When you create an M1 instance of this type and place it on a diagram, Farkitect renders it using the M2 notation. A “Person” element appears as a rounded blue node with a user icon because the Person element type’s notation says so.

Farkitect supports several node shapes:

ShapeAppearanceTypical use
rectangleStandard box with square cornersMost element types
roundedBox with rounded cornersActive elements, processes
noteBox with a folded cornerNotes and annotations
boundaryDashed-border regionGrouping and containment
textNo background or border, just textLabels and headings

The shape is set at the M2 level. All instances of a type share the same shape.

Each element type has a default colour defined in the M2 notation. This creates visual consistency — all Application Components are the same colour, all Business Processes are the same colour, making diagrams scannable at a glance.

Users can override colours on individual diagram nodes (see How to format nodes and edges). Overrides apply per-element, per-diagram — the same element can have different colours on different diagrams. The M2 default remains the fallback.

Element types can include an SVG icon that appears:

  • On the diagram node (typically in the top-left or as part of the notation)
  • In the Explorer tree next to the element name
  • In the Palette

Icons make element types immediately recognisable even before reading the name. Farkitect uses SVG markup so icons are crisp at any zoom level. Lucide is a good source of consistent, clean icons for custom metamodels.

Compartments are sections within a node that display different kinds of content. A typical element node has:

  1. Name compartment — shows the element’s name, usually bold
  2. Properties compartment — shows property values (if configured)
  3. Subordinate compartments — shows owned elements (e.g., attributes inside an entity)

Compartments are defined in the M2 notation using a list of compartment definitions, each specifying:

  • What content to display (name, properties, subordinates)
  • Style overrides (font weight, alignment)
  • Whether to show a label (e.g., “Attributes”)

Not all element types need compartments. A simple type might have just a name compartment. A complex type like an Entity in a data model might have name + attributes + operations.

A stereotype is a label that shows the M2 type name on the diagram node — for example, <<Application Component>> or <<Business Process>>. Stereotypes help identify types when the shape and colour alone aren’t sufficient (especially on busy diagrams).

Stereotype visibility is a per-diagram toggle — you can show or hide stereotypes for the entire diagram using the toolbar button. Some diagrams look cleaner without stereotypes; others need them for clarity.

Relationship types also have notation definitions:

PropertyWhat it controls
Line stylesolid, dashed, or dotted
Source markernone, arrow, hollowArrow
Target markernone, arrow, hollowArrow
ColourEdge line colour
Source-to-target verbHow to describe the relationship in the forward direction
Target-to-source verbHow to describe the relationship in the reverse direction
Show multiplicitiesWhether to display source/target multiplicity labels
Show role namesWhether to display role name labels

This separation is what enables multi-notation support. The same underlying model concepts (types, properties, relationships) can be rendered with different visual rules depending on the metamodel. ArchiMate has its own colour scheme and shapes; UML has different ones; your custom metamodel has whatever you define.

It also means the model is portable. A .farki export captures both the model data and the notation definitions. When someone imports it, the visual rendering is reproduced exactly — because the notation rules travel with the model.

And it enables AI interaction. When an LLM reads a .farki file, it works with the semantic model (types, properties, relationships) without needing to understand visual rendering. The notation is metadata, not the model itself.