{"id":24230692,"url":"https://github.com/rd-ricardo/aspnetcore-ddd-template","last_synced_at":"2026-05-07T22:41:45.336Z","repository":{"id":118783989,"uuid":"402507571","full_name":"RD-Ricardo/AspNetcore-DDD-Template","owner":"RD-Ricardo","description":null,"archived":false,"fork":false,"pushed_at":"2021-09-02T17:31:05.000Z","size":1111,"stargazers_count":1,"open_issues_count":0,"forks_count":0,"subscribers_count":1,"default_branch":"main","last_synced_at":"2025-12-04T16:19:11.817Z","etag":null,"topics":[],"latest_commit_sha":null,"homepage":null,"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/RD-Ricardo.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":"2021-09-02T17:31:02.000Z","updated_at":"2021-09-03T11:05:14.000Z","dependencies_parsed_at":"2023-03-27T11:21:20.669Z","dependency_job_id":null,"html_url":"https://github.com/RD-Ricardo/AspNetcore-DDD-Template","commit_stats":null,"previous_names":[],"tags_count":0,"template":false,"template_full_name":"ntxinh/AspNetCore-DDD","purl":"pkg:github/RD-Ricardo/AspNetcore-DDD-Template","repository_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/RD-Ricardo%2FAspNetcore-DDD-Template","tags_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/RD-Ricardo%2FAspNetcore-DDD-Template/tags","releases_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/RD-Ricardo%2FAspNetcore-DDD-Template/releases","manifests_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/RD-Ricardo%2FAspNetcore-DDD-Template/manifests","owner_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/owners/RD-Ricardo","download_url":"https://codeload.github.com/RD-Ricardo/AspNetcore-DDD-Template/tar.gz/refs/heads/main","sbom_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/RD-Ricardo%2FAspNetcore-DDD-Template/sbom","scorecard":null,"host":{"name":"GitHub","url":"https://github.com","kind":"github","repositories_count":286080680,"owners_count":32759448,"icon_url":"https://github.com/github.png","version":null,"created_at":"2022-05-30T11:31:42.601Z","updated_at":"2026-05-07T02:14:30.463Z","status":"ssl_error","status_checked_at":"2026-05-07T02:14:29.405Z","response_time":62,"last_error":"SSL_connect returned=1 errno=0 peeraddr=140.82.121.6: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":[],"created_at":"2025-01-14T13:29:45.105Z","updated_at":"2026-05-07T22:41:45.309Z","avatar_url":"https://github.com/RD-Ricardo.png","language":"C#","funding_links":[],"categories":[],"sub_categories":[],"readme":"# Diagram\n\n## Overview\n![](/Docs/overview.png)\n\n## Architecture\n![](/Docs/architecture.png)\n\n## Dependencies\n![](/Docs/dependencies.jpg)\n\n## Project dependencies\n![](/Docs/project-dependencies.jpg)\n\n## Code flow\n![](/Docs/flowchart.png)\n![](/Docs/code-flow.jpg)\n\n## Repository \u0026 Unit Of Work\n![](/Docs/custom-repo-versus-db-context.png)\n\n# Techical Stack\n- ASP.NET Core 5.0 (with .NET Core 5.0)\n- ASP.NET WebApi Core\n- ASP.NET Identity Core\n- Entity Framework Core\n- .NET Core Native DI\n- AutoMapper\n- FluentValidator\n- MediatR\n- Swagger UI\n- MSSQL\n- xUnit\n- Moq\n- Fluent Assertions\n- Polly\n- Refit\n\n# Design Patterns\n- Domain Driven Design\n- Domain Events\n- Domain Notification\n- CQRS\n- Event Sourcing\n- Unit Of Work\n- Repository \u0026 Generic Repository\n- Inversion of Control / Dependency injection\n- ORM\n- Mediator\n- Specification Pattern\n- Options Pattern\n\n# How to run\n- Visual Studio: `Just run`\n- VSCode: `Just run`\n- Terminal: `dotnet run --project src/DDD.Services.Api/DDD.Services.Api.csproj --launch-profile Dev`\n\n# Testing\n- Terminal: `dotnet test`\n\n# Docker\n\n```sh\ndocker build -t aspnetcore-docker-image .\ndocker run -it --rm -p 3000:80 --name aspnetcore-docker-container aspnetcore-docker-image\ndocker run -d -p 3000:80 --name aspnetcore-docker-container aspnetcore-docker-image\n```\n\n- http://localhost:3000/\n\n# Swagger (Dev env only)\n- http://localhost:5000/swagger\n\n# Health check (Staging \u0026 Prod env only)\n- http://localhost:5000/hc-ui\n- http://localhost:5000/hc-json\n\n# TODO\n- [x] Use multiple environments\n- [x] Transaction (Unit of Work)\n- [x] Validation (FluentValidation)\n- [x] Response wrapper\n- [x] Async/Await\n- [x] REST\n- [x] JWT\n- [x] Mapping (AutoMapper)\n- [x] API Specification, API Definition (Swagger)\n- [x] ORM {Entity Framework Core}\n- [x] Middleware\n- [x] CORS\n- [x] Pagination\n- [x] Sorting\n- [x] Error Handling, Global Exception\n- [x] HealthCheck\n- [x] Mail\n- [x] Http\n- [x] Database Auditing: CreatedAt/UpdatedAt CreatedBy/UpdatedBy\n- [x] Soft Delete\n- [x] Common: Constants, Helpers\n- [x] Docker\n- [x] EF: Shadow Properties\n- [x] Events\n- [x] Unit Testing\n- [x] Integration Testing\n- [x] Scoped over Transient\n- [x] Use `abstract` keyword to appropriate class\n- [x] Use `IQueryable`, `IEnumerable`, `IList` interfaces\n- [x] Use NetStandard 2.1 for Class Library\n- [x] Hashing\n- [x] AnalysisLevel: Automatically find latent bugs\n- [ ] Migration, Scaffold\n- [ ] Data Seeding\n- [ ] Logging\n- [ ] OAuth2, OIDC (OpenId Connect)\n- [ ] SignalR\n- [ ] Search\n- [ ] Kafka, RabbitMQ\n- [ ] Microservices, API Gateway\n- [ ] Multi-tenancy\n- [ ] StyleCop\n- [ ] API Versioning\n- [ ] API Versioning with Swagger\n- [ ] Primary Key to Integer\n- [ ] File storage: Upload/Download\n- [ ] Kubernetes\n- [ ] Globalization \u0026 Localization\n- [ ] Caching\n- [ ] Kestrel\n- [ ] Secret Manager\n- [ ] Task scheduling \u0026 Queues\n- [ ] Session \u0026 Cookie\n- [ ] Notifications\n- [ ] Encryption\n- [ ] EF: No-tracking queries\n- [ ] Dapper, Dapper Contrib (Optional)\n- [ ] BulkInsert, BulkUpdate, Async method for IRepository\n\n# References\n- https://github.com/EduardoPires/EquinoxProject\n- https://docs.microsoft.com/en-us/aspnet/core/security/authorization/roles\n- https://docs.microsoft.com/en-us/aspnet/core/security/authorization/claims\n- https://docs.microsoft.com/en-us/aspnet/core/security/authorization/policies\n- https://docs.microsoft.com/en-us/aspnet/core/security/authorization/limitingidentitybyscheme\n- https://www.red-gate.com/simple-talk/dotnet/c-programming/policy-based-authorization-in-asp-net-core-a-deep-dive/\n- https://docs.microsoft.com/en-us/archive/msdn-magazine/2017/october/cutting-edge-policy-based-authorization-in-asp-net-core\n- https://dev.azure.com/Techhowdy/_git/NG_Core_AuthRTDB\n- https://github.com/Elfocrash/Youtube.AspNetCoreTutorial\n- https://www.meziantou.net/entity-framework-core-soft-delete-using-query-filters.htm\n- https://docs.microsoft.com/en-us/aspnet/core/fundamentals/environments\n- https://michael-mckenna.com/multi-tenant-asp-dot-net-core-application-tenant-resolution\n- https://stackify.com/writing-multitenant-asp-net-core-applications/\n- https://github.com/DanielRBowen/SimpleMultiTenant\n- https://deviq.com/specification-pattern/\n- https://devblogs.microsoft.com/dotnet/automatically-find-latent-bugs-in-your-code-with-net-5/\n- https://xunit.github.io/docs/why-no-netstandard\n","project_url":"https://awesome.ecosyste.ms/api/v1/projects/github.com%2Frd-ricardo%2Faspnetcore-ddd-template","html_url":"https://awesome.ecosyste.ms/projects/github.com%2Frd-ricardo%2Faspnetcore-ddd-template","lists_url":"https://awesome.ecosyste.ms/api/v1/projects/github.com%2Frd-ricardo%2Faspnetcore-ddd-template/lists"}