{"id":23153053,"url":"https://github.com/unitvectory-labs/yamltecture","last_synced_at":"2026-05-24T01:02:26.576Z","repository":{"id":267722209,"uuid":"902144930","full_name":"UnitVectorY-Labs/YAMLtecture","owner":"UnitVectorY-Labs","description":"Lightweight CLI tool for generating outputs, including Mermaid diagrams, from YAML-defined system architectures.","archived":false,"fork":false,"pushed_at":"2025-04-02T21:52:06.000Z","size":195,"stargazers_count":0,"open_issues_count":0,"forks_count":0,"subscribers_count":1,"default_branch":"main","last_synced_at":"2025-04-02T22:29:52.188Z","etag":null,"topics":["architecture","diagram"],"latest_commit_sha":null,"homepage":"https://yamltecture.unitvectorylabs.com/","language":"Go","has_issues":true,"has_wiki":null,"has_pages":null,"mirror_url":null,"source_name":null,"license":"mit","status":null,"scm":"git","pull_requests_enabled":true,"icon_url":"https://github.com/UnitVectorY-Labs.png","metadata":{"files":{"readme":"README.md","changelog":null,"contributing":null,"funding":null,"license":"LICENSE","code_of_conduct":null,"threat_model":null,"audit":null,"citation":null,"codeowners":null,"security":null,"support":null,"governance":null,"roadmap":null,"authors":null,"dei":null,"publiccode":null,"codemeta":null}},"created_at":"2024-12-12T01:58:44.000Z","updated_at":"2025-04-02T21:52:08.000Z","dependencies_parsed_at":"2024-12-12T03:27:33.452Z","dependency_job_id":"b3022052-1029-47c9-b4bc-3b52b4c65fb1","html_url":"https://github.com/UnitVectorY-Labs/YAMLtecture","commit_stats":null,"previous_names":["unitvectory-labs/yamltecture"],"tags_count":2,"template":false,"template_full_name":null,"repository_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/UnitVectorY-Labs%2FYAMLtecture","tags_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/UnitVectorY-Labs%2FYAMLtecture/tags","releases_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/UnitVectorY-Labs%2FYAMLtecture/releases","manifests_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/UnitVectorY-Labs%2FYAMLtecture/manifests","owner_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/owners/UnitVectorY-Labs","download_url":"https://codeload.github.com/UnitVectorY-Labs/YAMLtecture/tar.gz/refs/heads/main","host":{"name":"GitHub","url":"https://github.com","kind":"github","repositories_count":247208192,"owners_count":20901570,"icon_url":"https://github.com/github.png","version":null,"created_at":"2022-05-30T11:31:42.601Z","updated_at":"2022-07-04T15:15:14.044Z","host_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub","repositories_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories","repository_names_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repository_names","owners_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/owners"}},"keywords":["architecture","diagram"],"created_at":"2024-12-17T19:29:12.135Z","updated_at":"2026-05-24T01:02:26.558Z","avatar_url":"https://github.com/UnitVectorY-Labs.png","language":"Go","funding_links":[],"categories":[],"sub_categories":[],"readme":"[![GitHub release](https://img.shields.io/github/release/UnitVectorY-Labs/YAMLtecture.svg)](https://github.com/UnitVectorY-Labs/YAMLtecture/releases/latest) [![License](https://img.shields.io/badge/license-MIT-blue.svg)](https://opensource.org/licenses/MIT) [![Active](https://img.shields.io/badge/Status-Active-green)](https://guide.unitvectorylabs.com/bestpractices/status/#active) [![codecov](https://codecov.io/gh/UnitVectorY-Labs/YAMLtecture/graph/badge.svg?token=YMO7aAligO)](https://codecov.io/gh/UnitVectorY-Labs/YAMLtecture) [![Go Report Card](https://goreportcard.com/badge/github.com/UnitVectorY-Labs/YAMLtecture)](https://goreportcard.com/report/github.com/UnitVectorY-Labs/YAMLtecture) \n\n# YAMLtecture\n\nA lightweight CLI tool for generating outputs, including Mermaid diagrams, from YAML-defined system architectures.\n\n## Overview\n\nYAMLtecture is an open-source CLI tool designed for application architects who need a simple yet powerful way to define and visualize system architectures. Using modular YAML files, YAMLtecture helps you map out components, hierarchies, and interactions while keeping everything easy to manage in version control. It allows you to define a comprehensive system configuration and then use queries to extract specific subsets for various use cases. With YAMLtecture, you can transform YAML definitions into diagrams (including Mermaid), keeping your architecture clear, version-controlled, and up to date.\n\n## Releases\n\nAll official versions of **YAMLtecture** are published on [GitHub Releases](https://github.com/UnitVectorY-Labs/YAMLtecture/releases). Since this application is written in Go, each release provides pre-compiled executables for macOS, Linux, and Windows—ready to download and run.\n\nAlternatively, if you have Go installed, you can install **YAMLtecture** directly from source using the following command:\n\n```bash\ngo install github.com/UnitVectorY-Labs/YAMLtecture@latest\n```\n\n## Configuration\n\nAt the core of YAMLtecture are YAML configuration files that define your system architecture. These files are split into two main sections: nodes and links. The nodes section describes the individual components of your system, while the links section defines how those components interact.\n\n```yaml\nnodes:\n  - id: cluster\n    type: Infrastructure\n    attributes:\n      name: \"Container Hosting\"\n  - id: service_foo\n    type: Microservice\n    parent: cluster\n    attributes:\n      name: \"Foo Service\"\n      language: \"Java\"\n  - id: service_bar\n    type: Microservice\n    parent: cluster\n    attributes:\n      name: \"Bar Service\"\n      language: \"Go\"\n\nlinks:\n  - source: service_foo\n    target: service_bar\n    type: \"API\"\n    attributes:\n      payload: \"example\"\n```\n\nThe key concept here is that each node has a unique `id`. The `type` field is flexible and can be set to whatever suits your architecture—common examples include Microservice, Database, Queue, etc. The `parent` field is optional and defines hierarchical links between nodes. These links are validated to form an acyclic tree, but not every node needs to be part of the same hierarchy.\n\nThe `attributes` field is a dictionary of key-value pairs that can store additional metadata about a node, useful for filtering and querying.\n\nLinks tie nodes together with the `source` and `target` fields. Each link is one-way, so for a bidirectional connection, you’ll need to define two separate links. Like nodes, links have a `type` field to classify the interaction (e.g., API, MessageQueue), and `attributes` can store metadata about the link, such as protocols, payloads, or endpoints.\n","project_url":"https://awesome.ecosyste.ms/api/v1/projects/github.com%2Funitvectory-labs%2Fyamltecture","html_url":"https://awesome.ecosyste.ms/projects/github.com%2Funitvectory-labs%2Fyamltecture","lists_url":"https://awesome.ecosyste.ms/api/v1/projects/github.com%2Funitvectory-labs%2Fyamltecture/lists"}