{"id":16748508,"url":"https://github.com/morozzzko/architecture-model-template","last_synced_at":"2025-03-16T03:28:03.040Z","repository":{"id":85281326,"uuid":"532714864","full_name":"Morozzzko/architecture-model-template","owner":"Morozzzko","description":"Supercharged structurizr-based template for architecture model","archived":false,"fork":false,"pushed_at":"2023-09-11T20:29:30.000Z","size":12041,"stargazers_count":2,"open_issues_count":0,"forks_count":0,"subscribers_count":1,"default_branch":"main","last_synced_at":"2025-03-15T04:37:49.708Z","etag":null,"topics":["architecture","c4model","dip","modelling","ruby","structurizr"],"latest_commit_sha":null,"homepage":"","language":"ASL","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/Morozzzko.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":"2022-09-05T02:20:03.000Z","updated_at":"2023-05-22T21:36:13.000Z","dependencies_parsed_at":null,"dependency_job_id":"a650a9d3-3de7-4a23-a00c-a0a7c9556c29","html_url":"https://github.com/Morozzzko/architecture-model-template","commit_stats":null,"previous_names":[],"tags_count":0,"template":true,"template_full_name":null,"repository_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/Morozzzko%2Farchitecture-model-template","tags_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/Morozzzko%2Farchitecture-model-template/tags","releases_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/Morozzzko%2Farchitecture-model-template/releases","manifests_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/Morozzzko%2Farchitecture-model-template/manifests","owner_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/owners/Morozzzko","download_url":"https://codeload.github.com/Morozzzko/architecture-model-template/tar.gz/refs/heads/main","host":{"name":"GitHub","url":"https://github.com","kind":"github","repositories_count":243821697,"owners_count":20353489,"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","c4model","dip","modelling","ruby","structurizr"],"created_at":"2024-10-13T02:12:50.963Z","updated_at":"2025-03-16T03:28:03.017Z","avatar_url":"https://github.com/Morozzzko.png","language":"ASL","funding_links":[],"categories":[],"sub_categories":[],"readme":"# Architecture model toolkit\n\nThis is a template repo for architecture modelling with a heavy focus on the very basic set-up, decisions, and the tooling to support it.\n\nCurrent tooling is heavily based on [Structurizr](https://structurizr.com/) and is basically a compilation of different tools.\n\nHere's the description of the setup:\n\n[DIP](https://github.com/bibendi/dip) is the tool of choice for interacting with workspace. We're running Docker with Compose. DIP facilitates and unifies interactions.\n\n[Structurizr Lite](https://structurizr.com/help/lite) for previewing, editing and interacting with workspace through browser. It's by far the most complex tool for the C4 model, and we're including it by default. Run `dip lite` to start it.\n\n[Structurizr CLI](https://github.com/structurizr/cli) for exporting, publishing, workspace validation, and some other automation. Sometimes it's just more handy than running `Lite`. Run `dip cli` to interact with CLI. Alternatively, run `dip validate` to validate the workspace, or `dip export` to export the workspace.\n\n[structurizr-ruby](https://github.com/Morozzzko/structurizr-ruby) for JRuby [scripting](https://github.com/structurizr/dsl/blob/master/docs/language-reference.md#scripts) and interactive REPL for querying workspace. Run `dip repl` to open a REPL session\n\n![REPL demo session](.github/pics/demo.gif)\n\nGitHub Actions for automated deploys.\n\nGitHub Codespaces for editing on the go.\n\n## Installation\n\n1. Install `dip` using their [instructions](https://github.com/bibendi/dip#installation)\n2. Run `dip build` to build Docker image with Structurizr Lite, CLI and REPL.\n3. That's it!\n\n## Running Structurizr Lite\n\nThe template incorporates the latest version of Structurizr Lite. Run `dip lite` to launch it in the current workspace\n\n## Running Structurizr CLI\n\nIn case you need Structurizr CLI for validations, export, pushing, or anything else, there are sample commands to run it. Run `dip ls` for the full list, but here are the basic ones:\n\n* `dip cli` – run Structurizr CLI\n* `dip validate` – shortcut to `structurizr.sh validate -w workspace.dsl`\n* `dip export` – shortcut to `... export -w ... -o output/`\n* `dip push` – to push the workspace to Structurizr Cloud or On-Premise instance\n\n## GitHub actions\n\nThe template comes with a GitHub action to push the workspace to Structurizr instance, either cloud or on-premise. By default, it launches on `workflow_dispatch`, meaning you need to run it automatically from `Actions` tab of your repo. \n\nHowever, if you'd like to run it automatically on each push to `main`, feel free to edit `.github/workflows/deploy_workspace.yml` and uncomment the following lines:\n\n```yaml\n  # push:\n  #   branches:\n  #     - main\n```\n\nThat'll make it work for each push to the repo.\n\nIf you'd like to use GitHub actions, you'll need to configure environment first. See next section.\n\n## Pushing workspace to Structurizr instance\n\nIf you have a Structurizr workspace on either structurizr.com or an on-premise installation, you'd probably want to upload your local workpace every now and then.\n\nThere are basically three ways to do so:\n\n* `dip push` through structurizr CLI\n* GitHub Actions\n* GitHub Codespaces: use `structurizr.sh push`\n\nAll of those options require their own credentials. For the sake of uniformity, all the tooling assumes _the same variable names_ everywhere\n\n* `STRUCTURIZR_WORKSPACE_ID` — workspace ID, what you'd put under `-id ...` in CLI\n* `STRUCTURIZR_WORKSPACE_KEY` — workspace key, `-key ...`\n* `STRUCTURIZR_WORKSPACE_SECRET` — workspace secret, `-secret ...`\n* `STRUCTURIZR_URL` — structurizr instance URL, `-url https:/..`\n\nIf you'd like to have any of those features enabled, you need to supply ENV accordingly.\n    \nIf you'd like to use `dip push` and don't want to handle env yourself, feel free to create `dip.override.yml` with the following contents:\n\n```yaml\n# dip.override.yml\n# Don't forget to supply your values!\nenvironment:\n  STRUCTURIZR_WORKSPACE_ID: id\n  STRUCTURIZR_WORKSPACE_KEY: key\n  STRUCTURIZR_WORKSPACE_SECRET: key\n  STRUCTURIZR_WORKSPACE_URL: https://api.structurizr.com\n```\n\n## Conventions\n\nThe main expectation is that you'd use this repo as a template for your workspaces and models. Feel free to fork and modify this repo to fit your own needs.\n\nRight now the most sigificant parts of the model look like this:\n\n```\n.\n├── docs\n│   └── 01-test.md\n│   ├── .keep\n├── output\n│   ├── .keep\n├── workspace.dsl\n└── workspace.json\n```\n\nBasically, what we've got are:\n\n1. Workspace files -- both DSL and JSON files. DSL is supposed to be authored by us, while JSON is supposed to be generated by CLI or Structurizr Lite.\n2. `docs` directory for documentation. It contains an example of embedding diagrams.\n2. `output` directory for all of the CLI-generated outputs. It's gitignored, so feel free to put anything there\n\n## License and considerations\n\nThis code is licensed under the [MIT license](LICENSE).\n\nHowever, this repository distributes and incorporates other people's works.\n\n### arc42\n\nThis repository contains a derivative of [arc42](https://arc42.org/download#file-based-formats) 8.0 at `docs/arc42`\n\nModifications:\n\n* Removed images, config and root file\n* `src` directory is now `arc42`\n\nThis content is licensed under [Creative Commons Attribution-ShareAlike 4.0 International License.](https://github.com/arc42/arc42-template/blob/master/LICENSE.txt)\n\n### JRuby docker image\n\nDockerfile contains code from JRuby's official Docker image. It is licensed under MIT. You can see the copyright at [JRuby Docker repo](https://github.com/jruby/docker-jruby/blob/master/LICENSE.md).\n","project_url":"https://awesome.ecosyste.ms/api/v1/projects/github.com%2Fmorozzzko%2Farchitecture-model-template","html_url":"https://awesome.ecosyste.ms/projects/github.com%2Fmorozzzko%2Farchitecture-model-template","lists_url":"https://awesome.ecosyste.ms/api/v1/projects/github.com%2Fmorozzzko%2Farchitecture-model-template/lists"}