IFY.Archimedes 0.1.0

dotnet tool install --global IFY.Archimedes --version 0.1.0
                    
This package contains a .NET tool you can call from the shell/command line.
dotnet new tool-manifest
                    
if you are setting up this repo
dotnet tool install --local IFY.Archimedes --version 0.1.0
                    
This package contains a .NET tool you can call from the shell/command line.
#tool dotnet:?package=IFY.Archimedes&version=0.1.0
                    
nuke :add-package IFY.Archimedes --version 0.1.0
                    

<div align="center">

Archimedes

</div>

Archimedes

A generator for layered architectural diagrams.

Overview

Archimedes is a tool designed to help developers create layered architectural diagrams for their software projects. It allows you to define layers and components in a structured way, making it easier to visualise and communicate the architecture of your applications.

Features

  • Define layers and components using a simple configuration file.
  • Generate Mermaid diagrams from the defined architecture.
  • Visualize the relationships between different components and layers, drilling down into sub-components as needed.

Command-line

The dotnet command line tool accepts the following arguments:

IFY.Archimedes.exe [ <path> | -file <path> ] [ -dir TD|LR ]

Definition file

The architecture is defined as either JSON (comments allowed) or YAML.

The structure of the file is as follows:

# Root is dictionary of components
ComponentID:
  style: # (optional) Display style of component
    - node
    - block
    - data
    - pill
    - soft
    - circle
    - circle2
    - flag
    - diamond
    - hexagon
    - leanR
    - leanL
    - roof
    - boat
  title: (string, optional, default same as ID) Title of the component
  detail: (string, optional) Additional details about the component
  doc: (string, optional) URL to documentation
  style: (string, optional) Mermaid-support CSS: https://mermaid.js.org/syntax/flowchart.html#styling-a-node
  expand: (boolean, default: false) Whether the component is always expanded
  children: # (optional) Dictionary of child components
    ChildComponentID: {} # Same structure as parent
  links: # (optional) Dictionary of links to other components as string or object
    TargetComponentID: # Target of the link with just a style
      - default # Can be omitted using '{}'
      - dots
      - line # No arrow
      - thick
      - invisible # Nothing visible
    TargetComponentID2: # Target of the link with full options
      style: # (string, optional) Style of the link
        - default
        - dots
        - line # No arrow
        - thick
        - invisible # Nothing visible
      text: (string, optional) Text for the link
      reverse: (boolean, default: false) Whether the link is reversed (target to source)

Example

Here is an example of a definition file in YAML format:

.config:
  direction: LR
  nodeTypes:
    external:
      fill: "#888"
      stroke-dasharray: 5
File:
  title: Input file
  style: roof
  detail: JSON or YAML
  links:
    Parser: {}
Archimedes:
  doc: https://github.com/IFYates/IFY.Archimedes
  children:
    Parser:
      style: lean-r
      links:
        Structure: {}
        ParserFail: dots
    ParserFail:
      title: Fail
      style: circle2
    Structure:
      title: Hierarchy builder
      links:
        Writer: {}
    Writer:
      style: lean-l
      links:
        Output: dots
Output:
  detail: Mermaid diagrams
  style: boat
  links:
    Next: dots
Next:
  title: Your processes
  style: external

Using command IFY.Archimedes.exe -file example.yaml, you would get the following Mermaid diagrams:

<span id="root-d"></span>

All Components

graph LR
%% All Components
    File[/"Input file<br><em>JSON or YAML</em>"\]
    Archimedes[["<a href='#d-archimedes' title='Expand node'>Archimedes</a><br><small><a href='https://github.com/IFYates/IFY.Archimedes' title='Go to documentation'>📖 Documentation</a></small><br><small>4 children</small>"]]
    Output[\"Output<br><em>Mermaid diagrams</em>"/]
    Next["Your processes"]
    style Next fill: #888, stroke-dasharray: 5

    File -->|"Via args<br><small><em>To <a href='#d-archimedes'>Parser</a></em></small>"| Archimedes
    Archimedes -.->|"<small><em>From <a href='#d-archimedes'>Writer</a></em></small>"| Output
    Output -.-> Next

<span id="d-archimedes"></span>

Archimedes

graph LR
%% Archimedes
    B638932708823095386(["<small><a href='#root-d'>Back</a></small>"])

    subgraph Archimedes["<big><strong>Archimedes</strong></big> <sup><a href='https://github.com/IFYates/IFY.Archimedes' title='Go to documentation'>📖</a></sup>"]
        Parser[/"Parser"/]
        ParserFail((("Fail")))
        Structure["Hierarchy builder"]
        Writer[\"Writer"\]
    end
    File[/"Input file<br><em>JSON or YAML</em>"\]
    Output[\"Output<br><em>Mermaid diagrams</em>"/]

    Parser --> Structure
    Parser -.-> ParserFail
    Structure --> Writer
    Writer -.-> Output
    File -->|"Via args"| Parser
Product Compatible and additional computed target framework versions.
.NET net10.0 is compatible.  net10.0-android was computed.  net10.0-browser was computed.  net10.0-ios was computed.  net10.0-maccatalyst was computed.  net10.0-macos was computed.  net10.0-tvos was computed.  net10.0-windows was computed. 
Compatible target framework(s)
Included target framework(s) (in package)
Learn more about Target Frameworks and .NET Standard.

This package has no dependencies.

Version Downloads Last Updated
0.1.0 337 9/16/2025