{"id":20973632,"url":"https://github.com/alexandrehtrb/cqrsexample","last_synced_at":"2026-04-21T18:33:52.490Z","repository":{"id":132836868,"uuid":"359891622","full_name":"alexandrehtrb/CqrsExample","owner":"alexandrehtrb","description":"An example of CQRS architectural pattern on ASP.NET Core.","archived":false,"fork":false,"pushed_at":"2026-02-23T15:32:47.000Z","size":125,"stargazers_count":1,"open_issues_count":0,"forks_count":0,"subscribers_count":2,"default_branch":"master","last_synced_at":"2026-02-23T23:36:06.014Z","etag":null,"topics":["api","api-testing","asp-net-core","clean-architecture","cqrs","cqrs-pattern","ddd","domain-driven-design","dotnet","dotnet-core","feature-folders","hexagonal-architecture","nativeaot","notification-pattern","nullable-reference-types","structured-logging","swagger-documentation","unit-testing"],"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/alexandrehtrb.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,"zenodo":null,"notice":null,"maintainers":null,"copyright":null,"agents":null,"dco":null,"cla":null}},"created_at":"2021-04-20T17:02:13.000Z","updated_at":"2026-02-23T15:33:32.000Z","dependencies_parsed_at":null,"dependency_job_id":"a2e31f98-e7c5-473b-8423-aac47c1c335b","html_url":"https://github.com/alexandrehtrb/CqrsExample","commit_stats":null,"previous_names":[],"tags_count":0,"template":false,"template_full_name":null,"purl":"pkg:github/alexandrehtrb/CqrsExample","repository_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/alexandrehtrb%2FCqrsExample","tags_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/alexandrehtrb%2FCqrsExample/tags","releases_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/alexandrehtrb%2FCqrsExample/releases","manifests_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/alexandrehtrb%2FCqrsExample/manifests","owner_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/owners/alexandrehtrb","download_url":"https://codeload.github.com/alexandrehtrb/CqrsExample/tar.gz/refs/heads/master","sbom_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/alexandrehtrb%2FCqrsExample/sbom","scorecard":null,"host":{"name":"GitHub","url":"https://github.com","kind":"github","repositories_count":286080680,"owners_count":32104715,"icon_url":"https://github.com/github.png","version":null,"created_at":"2022-05-30T11:31:42.601Z","updated_at":"2026-04-21T11:25:29.218Z","status":"ssl_error","status_checked_at":"2026-04-21T11:25:28.499Z","response_time":128,"last_error":"SSL_connect returned=1 errno=0 peeraddr=140.82.121.5:443 state=error: unexpected eof while reading","robots_txt_status":"success","robots_txt_updated_at":"2025-07-24T06:49:26.215Z","robots_txt_url":"https://github.com/robots.txt","online":false,"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":["api","api-testing","asp-net-core","clean-architecture","cqrs","cqrs-pattern","ddd","domain-driven-design","dotnet","dotnet-core","feature-folders","hexagonal-architecture","nativeaot","notification-pattern","nullable-reference-types","structured-logging","swagger-documentation","unit-testing"],"created_at":"2024-11-19T04:20:30.007Z","updated_at":"2026-04-21T18:33:52.457Z","avatar_url":"https://github.com/alexandrehtrb.png","language":"C#","funding_links":[],"categories":[],"sub_categories":[],"readme":"# CQRS Example\n\n[Ler em português](README_pt.md)\n\nThis project is an example of a shopping list API to show some software architectural concepts, mainly CQRS (Command and Query Responsibility Segregation).\n\nThe server is an ASP.NET Minimal API using .NET 10, with as few external dependencies as possible.\n\n## Architectural patterns and programming concepts applied\n\nThe links below are for studying and knowledge reference.\n\n* [CQRS pattern](https://docs.microsoft.com/en-us/azure/architecture/patterns/cqrs)\n* [Notifications pattern](https://martinfowler.com/articles/replaceThrowWithNotification.html)\n* [Feature folders](http://www.kamilgrzybek.com/design/feature-folders/)\n* [Structured logging](https://messagetemplates.org/)\n* [Nullable type checking](https://docs.microsoft.com/en-us/dotnet/csharp/nullable-references)\n* [Unit tests](https://softwaretestingfundamentals.com/unit-testing/)\n* [API tests](https://pororoca.io/docs/automated-tests)\n* [API documentation with examples](https://guides.scalar.com/scalar/scalar-api-references/net-integration)\n\n## To run the project\n\nThe project requires only [.NET 10](https://dotnet.microsoft.com/) installed. The API uses an in-memory database.\n\nThe `runserverlocal.ps1` script builds and runs the API, listening on `https://localhost:5001`.\n\nThe `rununittests.ps1` script runs the unit tests and generates a testing coverage report at a `TestResults` folder. It requires the [ReportGenerator](https://github.com/danielpalme/ReportGenerator) installed.\n\n## NativeAOT\n\nThis project is NativeAOT and trimming compatible, through the `PublishAot` flag. Check out the API project's .csproj to understand how it works.\n","project_url":"https://awesome.ecosyste.ms/api/v1/projects/github.com%2Falexandrehtrb%2Fcqrsexample","html_url":"https://awesome.ecosyste.ms/projects/github.com%2Falexandrehtrb%2Fcqrsexample","lists_url":"https://awesome.ecosyste.ms/api/v1/projects/github.com%2Falexandrehtrb%2Fcqrsexample/lists"}