{"id":16992554,"url":"https://github.com/omissis/goarkitect","last_synced_at":"2025-03-17T09:30:38.542Z","repository":{"id":59084383,"uuid":"457136825","full_name":"omissis/goarkitect","owner":"omissis","description":"Describe and check architectural constraints of a Go project using a composable set of rules described in one or multiple yaml files.","archived":false,"fork":false,"pushed_at":"2024-10-14T03:15:18.000Z","size":4819,"stargazers_count":19,"open_issues_count":14,"forks_count":0,"subscribers_count":2,"default_branch":"main","last_synced_at":"2024-10-15T03:29:23.049Z","etag":null,"topics":["architecture","go","golang","hacktoberfest"],"latest_commit_sha":null,"homepage":"","language":"Go","has_issues":true,"has_wiki":null,"has_pages":null,"mirror_url":null,"source_name":null,"license":"apache-2.0","status":null,"scm":"git","pull_requests_enabled":true,"icon_url":"https://github.com/omissis.png","metadata":{"files":{"readme":"README.md","changelog":"CHANGELOG.md","contributing":null,"funding":null,"license":"LICENSE.md","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":"2022-02-08T23:19:46.000Z","updated_at":"2023-07-16T17:18:15.000Z","dependencies_parsed_at":"2023-11-10T22:23:26.972Z","dependency_job_id":"ea869b64-29d4-416d-ae43-a48ada04bdcb","html_url":"https://github.com/omissis/goarkitect","commit_stats":{"total_commits":164,"total_committers":2,"mean_commits":82.0,"dds":"0.44512195121951215","last_synced_commit":"a4fb016d9618baba3b10ad07b88a2b33ea739029"},"previous_names":[],"tags_count":4,"template":false,"template_full_name":null,"repository_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/omissis%2Fgoarkitect","tags_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/omissis%2Fgoarkitect/tags","releases_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/omissis%2Fgoarkitect/releases","manifests_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/omissis%2Fgoarkitect/manifests","owner_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/owners/omissis","download_url":"https://codeload.github.com/omissis/goarkitect/tar.gz/refs/heads/main","host":{"name":"GitHub","url":"https://github.com","kind":"github","repositories_count":243858633,"owners_count":20359253,"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","go","golang","hacktoberfest"],"created_at":"2024-10-14T03:29:24.581Z","updated_at":"2025-03-17T09:30:38.536Z","avatar_url":"https://github.com/omissis.png","language":"Go","funding_links":[],"categories":[],"sub_categories":[],"readme":"# GoArkitect\n\n\u003cp align=\"center\"\u003e\n\u003cimg src=\"docs/assets/goarkitect.logo.jpg\" alt=\"crkitect\" title=\"goarkitect\" /\u003e\n\u003c/p\u003e\n\nThis project gives developers the ability to describe and check  architectural constraints of a project using a composable set of rules described in one or multiple yaml files.\n\n## Badges\n[![GitHub release (latest SemVer)](https://img.shields.io/github/v/release/omissis/goarkitect?style=for-the-badge)](https://github.com/omissis/goarkitect/releases/latest)\n[![GitHub Workflow Status (event)](https://img.shields.io/github/workflow/status/omissis/goarkitect/development?style=for-the-badge)](https://github.com/omissis/goarkitect/actions?workflow=development)\n[![License](https://img.shields.io/github/license/omissis/goarkitect?style=for-the-badge)](/LICENSE.md)\n[![GitHub go.mod Go version](https://img.shields.io/github/go-mod/go-version/omissis/goarkitect?style=for-the-badge)](https://tip.golang.org/doc/go1.19)\n[![GitHub code size in bytes](https://img.shields.io/github/languages/code-size/omissis/goarkitect?style=for-the-badge)](https://github.com/omissis/goarkitect)\n[![GitHub repo file count (file type)](https://img.shields.io/github/directory-file-count/omissis/goarkitect?style=for-the-badge)](https://github.com/omissis/goarkitect)\n[![GitHub all releases](https://img.shields.io/github/downloads/omissis/goarkitect/total?style=for-the-badge)](https://github.com/omissis/goarkitect)\n[![GitHub commit activity](https://img.shields.io/github/commit-activity/y/omissis/goarkitect?style=for-the-badge)](https://github.com/omissis/goarkitect/commits)\n[![Conventional Commits](https://img.shields.io/badge/Conventional%20Commits-1.0.0-yellow.svg?style=for-the-badge)](https://conventionalcommits.org)\n[![Codecov branch](https://img.shields.io/codecov/c/github/omissis/goarkitect/main.svg?style=for-the-badge)](https://codecov.io/gh/omissis/goarkitect)\n[![Code Climate maintainability](https://img.shields.io/codeclimate/maintainability/omissis/goarkitect?style=for-the-badge)](https://codeclimate.com/github/omissis/goarkitect)\n## Installation\n\n### homebrew tap\n\n```bash\nbrew tap omissis/goarkitect\nbrew install goarkitect\n```\n\n### docker\n\n```bash\ndocker pull omissis/goarkitect:latest\n```\n\n### manually\n\nDownload the pre-compiled binaries from the [releases page](https://github.com/omissis/goarkitect/releases) and copy them to the desired location.\n\n## Example configuration\n\n```yaml\n---\nrules:\n  - name: all inner asdf manifests contain golang, possibly in its 1.23.2 version  # name of the rule, it should tell what the rule is about\n    kind: file # name of the matcher to use, which tells what objects it will operate on\n    matcher:\n      kind: all # the all kind sets the matcher to match all possible files, which will be narrowed down below\n    thats: # 'thats' apply filtering to the selected matchers to narrow down the files to operate on\n      - kind: end_with # matcher filter that selects only files whose name ends with .tool-versions\"\n        suffix: .tool-versions\n    excepts: # 'excepts' allow to pull some special cases out of the set of file determined by the 'thats' filters\n      - kind: this # excepts the one in the root directory\n        filePath: ./.tool-versions\n    musts: # 'musts' will trigger errors in case the expectation is not respected, which in turn will have goarkitect to exit with status code 1\n      - kind: contain_value\n        value: golang\n    shoulds: # 'shoulds' will trigger warnings, which won't cause error status codes on exit\n      - kind: contain_value\n        value: golang 1.23.2\n    coulds: # 'coulds' will trigger info-level notices, and they can be seen as suggestions\n      - kind: contain_value\n        value: golangci-lint\n    because: \"it is needed for the project to compile the source code\" # reason for the rule to exists\n```\n\nSee the [examples folder](./examples/) for more complete information on how to configure goarkitect rules.\n\n## Example usage\n\n```sh\n# validate the default config file (.goarkitect.yaml) and outputs the result in json\ngoarkitect validate --output=json\n\n# validate the custom .ark.yaml config file\ngoarkitect validate .ark.yaml\n\n# validate the custom .ark.yaml config file and all the config files found in the .ark/ folder\ngoarkitect validate .ark.yaml .ark/\n\n# verify that the current folder follows the rules specified in the default config file (.goarkitect.yaml)\ngoarkitect verify\n\n# verify that the current folder follows the rules specified in the .ark/ folder and outputs the result in json\ngoarkitect verify .ark/ --output=json\n```\n\n## Acknowledgements\n\nGoarkitect draws inspiration from [Alessandro Minoccheri](https://alessandrominoccheri.github.io)'s [PHPArkitect](https://github.com/phparkitect/arkitect), a tool that helps you to keep your PHP codebase coherent and solid.\n","project_url":"https://awesome.ecosyste.ms/api/v1/projects/github.com%2Fomissis%2Fgoarkitect","html_url":"https://awesome.ecosyste.ms/projects/github.com%2Fomissis%2Fgoarkitect","lists_url":"https://awesome.ecosyste.ms/api/v1/projects/github.com%2Fomissis%2Fgoarkitect/lists"}