Archmeta Application C4 L2 Viewer
Elements (9)
Kernel Clientc4:container
archmeta.kernel-clientThe wire contract: the types crossing HTTP, and the predicates that must not be re-implemented on either side of it. Shared so the Viewer and the generated site cannot disagree about what a relationship means.
ArchMetac4:softwaresystem
archmetaA platform for managing architecture documentation as code. Architects describe their organisation in a textual DSL stored in Git; the Kernel reads that repository into an in-memory graph and serves it over REST, the Viewer authors it, and the Publisher turns it into a static site. There is no database — Git is the source of truth, and the same commit always produces the same model.
Kernelc4:container
archmeta.kernelReads the repository into an in-memory graph and serves it over REST on port 7777. Never throws on model content: unresolved references, malformed attributes and rule violations become diagnostics, and the load always completes. A pure function of the repository — no clock, no randomness, no network during a load — so the same commit produces the same model and the same diagnostics forever.
Viewerc4:container
archmeta.viewerThe single-screen React SPA that is the primary authoring tool: model canvas, BPMN modeler, Markdown editor and Explore in one shell, flanked by a management pane and a docked Inspector. Never reads the whole graph — every instance read is a point read, a search or a bounded neighbourhood — and never touches the filesystem. Edits stage; only a commit sends them to the Kernel.
BPMN Modelerc4:component
archmeta.viewer.bpmn-modelerEdits .bpmn files in place and links their shapes to model elements. The .bpmn file stays authoritative and is never regenerated, so a diagram drawn in another tool survives contact with ArchMeta.
Model Canvasc4:component
archmeta.viewer.canvasWhere diagrams are drawn and edited: selection, drag, containment, expansion and routing. Dropping an element entirely inside another re-parents it; the innermost candidate decides, so dropping something back where it already lives does nothing at all.
Edit Sessionc4:component
archmeta.viewer.edit-sessionThe staging layer. Edits stage and never apply — there is no path from a gesture to the filesystem. Pending operations show in the commit bar, Discard reverses them, and one commit sends the batch through the API. Enforced structurally rather than by convention.
Inspectorc4:component
archmeta.viewer.inspectorThe docked right pane: an element's metadata, its links, its derived data points and the diagnostics that concern it, fetched for that element rather than filtered from a whole-model read.
Diagram Renderc4:container
archmeta.diagram-renderThe rendering primitives both renderers share: geometry, element shapes, orthogonal routing, status styling, relationship chips and the link indicator. One implementation per render boundary is an enforced rule — a diagram must look the same on the canvas and on the published site, and the only way to guarantee that is to give them one function.
Relationships (16)Relationships (1)
archmeta.kernel → archmeta.kernel-clientKernel → Kernel Clientc4:dependson
archmeta.kernel → archmeta.kernel-clientStages .bpmn changes intoc4:sendsto
archmeta.viewer.bpmn-modeler → archmeta.viewer.edit-sessionarchmeta.viewer.canvas → archmeta.diagram-renderModel Canvas → Diagram Renderc4:dependson
archmeta.viewer.canvas → archmeta.diagram-renderStages every gesture intoc4:sendsto
archmeta.viewer.canvas → archmeta.viewer.edit-sessionarchmeta.viewer.inspector → archmeta.viewer.edit-sessionInspector → Edit Sessionc4:sendsto
archmeta.viewer.inspector → archmeta.viewer.edit-sessionarchmeta.viewer → archmeta.diagram-renderViewer → Diagram Renderc4:dependson
archmeta.viewer → archmeta.diagram-renderarchmeta.viewer → archmeta.kernel-clientViewer → Kernel Clientc4:dependson
archmeta.viewer → archmeta.kernel-clientREST over HTTPc4:uses
archmeta.viewer → archmeta.kernelREST over HTTP — never IPC, never shared state
archmeta.viewer → archmeta.viewer.bpmn-modelerViewer → BPMN Modelerarchimate:composition
archmeta.viewer → archmeta.viewer.bpmn-modelerarchmeta.viewer → archmeta.viewer.canvasViewer → Model Canvasarchimate:composition
archmeta.viewer → archmeta.viewer.canvasarchmeta.viewer → archmeta.viewer.edit-sessionViewer → Edit Sessionarchimate:composition
archmeta.viewer → archmeta.viewer.edit-sessionarchmeta.viewer → archmeta.viewer.inspectorViewer → Inspectorarchimate:composition
archmeta.viewer → archmeta.viewer.inspectorarchmeta → archmeta.diagram-renderArchMeta → Diagram Renderarchimate:composition
archmeta → archmeta.diagram-renderarchmeta → archmeta.kernel-clientArchMeta → Kernel Clientarchimate:composition
archmeta → archmeta.kernel-clientarchmeta → archmeta.kernelArchMeta → Kernelarchimate:composition
archmeta → archmeta.kernelarchmeta → archmeta.viewerArchMeta → Viewerarchimate:composition
archmeta → archmeta.viewer