{"id":28396374,"url":"https://github.com/domoar/cleanarchitecturetemplate","last_synced_at":"2026-05-01T17:33:46.350Z","repository":{"id":288422288,"uuid":"967429768","full_name":"domoar/CleanArchitectureTemplate","owner":"domoar","description":null,"archived":false,"fork":false,"pushed_at":"2026-04-29T02:58:26.000Z","size":3035,"stargazers_count":1,"open_issues_count":0,"forks_count":0,"subscribers_count":1,"default_branch":"main","last_synced_at":"2026-04-29T04:35:10.850Z","etag":null,"topics":["aspnet-core","aspnet-core-webapi","csharp","docker","jaeger","seq","serilog","xunit"],"latest_commit_sha":null,"homepage":"","language":"C#","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/domoar.png","metadata":{"files":{"readme":"README.md","changelog":null,"contributing":null,"funding":null,"license":"LICENSE.txt","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,"zenodo":null,"notice":null,"maintainers":null,"copyright":null,"agents":null,"dco":null,"cla":null}},"created_at":"2025-04-16T12:50:27.000Z","updated_at":"2025-04-30T07:27:23.000Z","dependencies_parsed_at":"2025-11-28T14:04:38.629Z","dependency_job_id":null,"html_url":"https://github.com/domoar/CleanArchitectureTemplate","commit_stats":null,"previous_names":["domoar/cleanarchitecturetemplate"],"tags_count":0,"template":true,"template_full_name":null,"purl":"pkg:github/domoar/CleanArchitectureTemplate","repository_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/domoar%2FCleanArchitectureTemplate","tags_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/domoar%2FCleanArchitectureTemplate/tags","releases_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/domoar%2FCleanArchitectureTemplate/releases","manifests_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/domoar%2FCleanArchitectureTemplate/manifests","owner_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/owners/domoar","download_url":"https://codeload.github.com/domoar/CleanArchitectureTemplate/tar.gz/refs/heads/main","sbom_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/domoar%2FCleanArchitectureTemplate/sbom","scorecard":null,"host":{"name":"GitHub","url":"https://github.com","kind":"github","repositories_count":286080680,"owners_count":32507087,"icon_url":"https://github.com/github.png","version":null,"created_at":"2022-05-30T11:31:42.601Z","updated_at":"2026-04-30T13:12:12.517Z","status":"online","status_checked_at":"2026-05-01T02:00:05.856Z","response_time":64,"last_error":null,"robots_txt_status":"success","robots_txt_updated_at":"2025-07-24T06:49:26.215Z","robots_txt_url":"https://github.com/robots.txt","online":true,"can_crawl_api":true,"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":["aspnet-core","aspnet-core-webapi","csharp","docker","jaeger","seq","serilog","xunit"],"created_at":"2025-05-31T21:38:15.972Z","updated_at":"2026-05-01T17:33:46.341Z","avatar_url":"https://github.com/domoar.png","language":"C#","funding_links":[],"categories":[],"sub_categories":[],"readme":"# CleanArchitectureTemplate\n\n[![CI - Build, Format, Test](https://github.com/domoar/CleanArchitectureTemplate/actions/workflows/build.yml/badge.svg)](https://github.com/domoar/CleanArchitectureTemplate/actions/workflows/build.yml) [![Generate documentation](https://github.com/domoar/CleanArchitectureTemplate/actions/workflows/documentation.yml/badge.svg)](https://github.com/domoar/CleanArchitectureTemplate/actions/workflows/documentation.yml) [![Generate and Publish Code Coverage](https://github.com/domoar/CleanArchitectureTemplate/actions/workflows/codecoverage.yml/badge.svg)](https://github.com/domoar/CleanArchitectureTemplate/actions/workflows/codecoverage.yml)\n\n## ToC\n\n 1. [Api](#api)\n 2. [Docker](#dockerfile-and-dockercompose-for-the-project)\n 3. [Testing](#testing)\n 4. [Usage](#usage)\n 5. [Architecture](#architecture)\n 6. [CI/CD](#continuous-integration-und-continuous-deployment-cicd)\n 7. [Tools](#tools)\n 8. [Git Hooks](#git-hooks)\n\n## Api\n\nTo debug or run the api locally use\n\n```bash\ndotnet watch run --launch-profile \"https\"\n```\n\n## DockerFile and DockerCompose for the project\n\nThere is a Dockerfile and a docker-compose.yml in the root directory. The DockerFile can be build with:\n\n```bash\ndocker build .\n```\n\nThe compose file starts three services:\n\n- api – ASP.NET Core application.\n- seq – Centralised structured log server.\n- jaeger – Distributed tracing system.\n\nStart / Shutdown these services with\n\n```bash\ndocker compose up -d \ndocker compose down\n```\n\n### Seq for Logging\n\nSeq captures and can query structures logs.\n\n#### How to setup Seq\n\n### Jaeger for Tracing\n\nJaeger displays distributed traces.\n\n#### How to setup Jaeger\n\n##### Additonal compose files for different purposes (.dcproj)\n\n- `docker-compose.yml` + `docker-compose.override.yml` – default local-dev stack (override is loaded automatically).\n- `docker-compose.dev.yml` – adds optional developer tooling (e.g. ).\n- `docker-compose.prod.yml` – production-only tweaks (harder restart policies, resource limits, etc.).\n\n```bash\n# development \ndocker compose -f docker-compose.yml -f docker-compose.prod.yml up -d\n\n# production\ndocker compose -f docker-compose.yml -f docker-compose.dev.yml up -d\n```\n\nto run the developement stack.\n\n[Docker merge strategies](https://docs.docker.com/compose/how-tos/multiple-compose-files/merge/)\n\n## Testing\n\nAll Tests can be run by chaning the working directory of the unit or integration tests and then using the command:\n\n```bash\ncd tests/IntegrationTests\ndotnet test --logger \"console;verbosity=detailed\"\n```\n\nor\n\n```bash\ncd tests/UnitTests\ndotnet test --logger \"console;verbosity=detailed\"\n```\n\nApplying the `[Trait]` attribute at the **class** level allows, that every test method in that class can be run seperatly.\n\nExample to run individual test parts:\n\n```bash\ndotnet test --filter \"category=application\"\n```\n\n### Code Coverage\n\nCode Coverage is generated from unittests and integrationtests and merged into a report via GitHub Actions using the[ReportGenerator](https://github.com/danielpalme/ReportGenerator) tool.\n\n[View Full Coverage Report](https://domoar.github.io/CleanArchitectureTemplate/coverage/index.html)\n\n### Postman\n\nThe testsuite contains a postman collection that can be used via the postman application or its vscode extension. In `.extras/postman`.\n\n### Testsuite client\n\nThe testsuite also contains a .http file with environments pre configured. In `.extras/client` you can either use the vscode extension [Rest-Client](https://marketplace.visualstudio.com/items?itemName=humao.rest-client) or the built in feature from VS2022.\n\n## Usage\n\nYou can either use the github template and refactor or if you want the the full parametric experience?\n\nConsider the '.template.config/template.json' file.\n\nUse\n\n```bash\ngit clone https://github.com/domoar/CleanArchitectureTemplate.git\ncd CleanArchitectureTemplate\n```\n\nto clone the repository then customize with\n\n```bash\ndotnet new cleanarch --name MyApp --SolutionName \"MyApp\"\n```\n\nThis repo will be redone once github templates allows variable names in templates. [Discussion](https://github.com/orgs/community/discussions/5336)\n\n## Architecture\n\n## Continuous Integration und Continuous Deployment (CI/CD)\n\nCI/CD is handled with Github Actions see the workflows in **`.github/workflows`**.\n\n## Tools\n\nUsing the .editorconfig file all projects can be formatted using\n\n```bash\ndotnet format .\\__Northwind__.sln --verbosity diagnostic\n```\n\n## Git Hooks\n\nThis repo ships with a pre-commit hook in **`.githooks/pre-commit`**. Enable it once per clone by running\n\n```bash\ngit config core.hooksPath .githooks\n```\n\nafter cloning.\n[Git Hooks](https://git-scm.com/book/en/v2/Customizing-Git-Git-Hooks)\n\nThe pre-commit checks for formatting/ linting and also if the solution compiles and can be build without errors.\n","project_url":"https://awesome.ecosyste.ms/api/v1/projects/github.com%2Fdomoar%2Fcleanarchitecturetemplate","html_url":"https://awesome.ecosyste.ms/projects/github.com%2Fdomoar%2Fcleanarchitecturetemplate","lists_url":"https://awesome.ecosyste.ms/api/v1/projects/github.com%2Fdomoar%2Fcleanarchitecturetemplate/lists"}