gitextract_pjis_cnn/ ├── .aspire/ │ └── settings.json ├── .editorconfig ├── .github/ │ ├── CONTRIBUTING.md │ ├── FUNDING.yml │ ├── ISSUE_TEMPLATE/ │ │ ├── bug_report.md │ │ ├── config.yml │ │ └── feature_request.md │ ├── copilot-instructions.md │ ├── dependabot.yml │ └── workflows/ │ ├── build-ramdisk.yml │ ├── codeql-analysis.yml │ ├── dotnetcore.yml │ ├── publish-templates.yml │ └── publish.yml ├── .gitignore ├── .runsettings ├── .template.config/ │ └── template.json ├── .vscode/ │ ├── launch.json │ ├── settings.json │ └── tasks.json ├── CODE_OF_CONDUCT.md ├── CONTRIBUTING.md ├── Clean.Architecture.slnx ├── CleanArchitecture.nuspec ├── Directory.Build.props ├── Directory.Packages.props ├── LICENSE ├── MinimalClean/ │ ├── .editorconfig │ ├── .gitignore │ ├── .runsettings │ ├── .template.config/ │ │ └── template.json │ ├── Directory.Build.props │ ├── Directory.Packages.props │ ├── MinimalClean.Architecture.slnx │ ├── README.template.md │ ├── global.json │ └── src/ │ ├── MinimalClean.Architecture.AspireHost/ │ │ ├── AppHost.cs │ │ ├── MinimalClean.Architecture.AspireHost.csproj │ │ ├── Properties/ │ │ │ └── launchSettings.json │ │ ├── appsettings.Development.json │ │ └── appsettings.json │ ├── MinimalClean.Architecture.ServiceDefaults/ │ │ ├── Extensions.cs │ │ └── MinimalClean.Architecture.ServiceDefaults.csproj │ └── MinimalClean.Architecture.Web/ │ ├── AssemblyInfo.cs │ ├── CartFeatures/ │ │ ├── AddToCart/ │ │ │ ├── AddToCartEndpoint.cs │ │ │ └── AddToCartHandler.cs │ │ ├── CartDto.cs │ │ ├── CartResponse.cs │ │ ├── Checkout/ │ │ │ ├── CheckoutEndpoint.cs │ │ │ └── CheckoutHandler.cs │ │ └── GetById/ │ │ ├── GetByIdEndpoint.cs │ │ └── GetCartHandler.cs │ ├── Configurations/ │ │ ├── DatabaseOptions.cs │ │ ├── LoggerConfigs.cs │ │ ├── LoggingBehavior.cs │ │ ├── MediatorConfig.cs │ │ ├── MiddlewareConfig.cs │ │ ├── OptionConfigs.cs │ │ └── ServiceConfigs.cs │ ├── Constants.cs │ ├── Domain/ │ │ ├── CartAggregate/ │ │ │ ├── Cart.cs │ │ │ ├── CartId.cs │ │ │ ├── CartItem.cs │ │ │ ├── CartItemId.cs │ │ │ └── Specifications/ │ │ │ └── CartByIdSpec.cs │ │ ├── GuestUserAggregate/ │ │ │ ├── GuestUser.cs │ │ │ ├── GuestUserId.cs │ │ │ └── Specifications/ │ │ │ ├── GuestUserByEmailSpec.cs │ │ │ └── GuestUserByIdSpec.cs │ │ ├── Interfaces/ │ │ │ └── IEmailSender.cs │ │ ├── OrderAggregate/ │ │ │ ├── Order.cs │ │ │ ├── OrderId.cs │ │ │ ├── OrderItem.cs │ │ │ ├── OrderItemId.cs │ │ │ ├── Price.cs │ │ │ └── Quantity.cs │ │ └── ProductAggregate/ │ │ ├── Product.cs │ │ ├── ProductId.cs │ │ └── Specifications/ │ │ └── ProductByIdSpec.cs │ ├── Extensions/ │ │ └── ResultExtensions.cs │ ├── GlobalUsings.cs │ ├── Infrastructure/ │ │ ├── Data/ │ │ │ ├── AppDbContext.cs │ │ │ ├── AppDbContextExtensions.cs │ │ │ ├── AppDbContextFactory.cs │ │ │ ├── Config/ │ │ │ │ ├── CartConfiguration.cs │ │ │ │ ├── CartItemConfiguration.cs │ │ │ │ ├── DataSchemaConstants.cs │ │ │ │ ├── GuestUserConfiguration.cs │ │ │ │ ├── OrderConfiguration.cs │ │ │ │ ├── OrderItemConfiguration.cs │ │ │ │ ├── ProductConfiguration.cs │ │ │ │ ├── VogenEfCoreConverters.cs │ │ │ │ ├── VogenGuidIdValueGenerator.cs │ │ │ │ └── VogenIntIdValueGenerator.cs │ │ │ ├── EfRepository.cs │ │ │ ├── EventDispatcherInterceptor.cs │ │ │ ├── Migrations/ │ │ │ │ ├── 20251020223304_Initial.Designer.cs │ │ │ │ ├── 20251020223304_Initial.cs │ │ │ │ ├── 20251024232246_AddGuestUsersAndOrdersSqlServer.Designer.cs │ │ │ │ ├── 20251024232246_AddGuestUsersAndOrdersSqlServer.cs │ │ │ │ └── AppDbContextModelSnapshot.cs │ │ │ ├── Queries/ │ │ │ │ └── ListProductsQueryService.cs │ │ │ └── SeedData.cs │ │ ├── Email/ │ │ │ ├── FakeEmailSender.cs │ │ │ ├── MailserverConfiguration.cs │ │ │ └── MimeKitEmailSender.cs │ │ └── InfrastructureServiceExtensions.cs │ ├── MinimalClean.Architecture.Web.csproj │ ├── PagedResult.cs │ ├── ProductFeatures/ │ │ ├── Create/ │ │ │ └── CreateEndpoint.cs │ │ ├── GetById/ │ │ │ ├── GetByIdEndpoint.cs │ │ │ └── GetProductHandler.cs │ │ ├── List/ │ │ │ ├── IListProductsQueryService.cs │ │ │ ├── ListEndpoint.cs │ │ │ └── ListProductsHandler.cs │ │ ├── ProductDto.cs │ │ └── ProductRecord.cs │ ├── Program.cs │ ├── Properties/ │ │ └── launchSettings.json │ ├── api.http │ ├── appsettings.Development.json │ ├── appsettings.json │ ├── config.nsdepcop │ └── wwwroot/ │ └── .gitkeep ├── MinimalClean.nuspec ├── PARALLEL_TEST_EXECUTION.md ├── README.md ├── README.template.md ├── TESTCONTAINERS_IMPLEMENTATION.md ├── docs/ │ ├── architecture-decisions/ │ │ ├── README.md │ │ └── adr-001-dotnet-di-adoption.md │ └── minimal-clean-architecture.md ├── global.json ├── nuget.config ├── sample/ │ ├── .editorconfig │ ├── .github/ │ │ └── copilot-instructions.md │ ├── .runsettings │ ├── Directory.Build.props │ ├── Directory.Packages.props │ ├── NimblePros.SampleToDo.slnx │ ├── src/ │ │ ├── NimblePros.SampleToDo.AspireHost/ │ │ │ ├── NimblePros.SampleToDo.AspireHost.csproj │ │ │ ├── Program.cs │ │ │ ├── Properties/ │ │ │ │ └── launchSettings.json │ │ │ ├── appsettings.Development.json │ │ │ └── appsettings.json │ │ ├── NimblePros.SampleToDo.Core/ │ │ │ ├── ContributorAggregate/ │ │ │ │ ├── Contributor.cs │ │ │ │ ├── ContributorId.cs │ │ │ │ ├── ContributorName.cs │ │ │ │ ├── Events/ │ │ │ │ │ ├── ContributorDeletedEvent.cs │ │ │ │ │ └── ContributorNameUpdatedEvent.cs │ │ │ │ ├── Handlers/ │ │ │ │ │ ├── ContributorDeletedHandler.cs │ │ │ │ │ └── ContributorNameUpdatedEventLoggingHandler.cs │ │ │ │ └── Specifications/ │ │ │ │ └── ContributorByIdSpec.cs │ │ │ ├── CoreServiceExtensions.cs │ │ │ ├── GlobalUsings.cs │ │ │ ├── Interfaces/ │ │ │ │ ├── IDeleteContributorService.cs │ │ │ │ ├── IEmailSender.cs │ │ │ │ └── IToDoItemSearchService.cs │ │ │ ├── Localization.cs │ │ │ ├── NimblePros.SampleToDo.Core.csproj │ │ │ ├── ProjectAggregate/ │ │ │ │ ├── Events/ │ │ │ │ │ ├── ContributorAddedToItemEvent.cs │ │ │ │ │ ├── NewItemAddedEvent.cs │ │ │ │ │ └── ToDoItemCompletedEvent.cs │ │ │ │ ├── Handlers/ │ │ │ │ │ ├── ContributorAddedToItemLoggingHandler.cs │ │ │ │ │ ├── ItemCompletedEmailNotificationHandler.cs │ │ │ │ │ └── NewItemAddedLoggingHandler.cs │ │ │ │ ├── Priority.cs │ │ │ │ ├── Project.cs │ │ │ │ ├── ProjectErrorMessages.cs │ │ │ │ ├── ProjectId.cs │ │ │ │ ├── ProjectName.cs │ │ │ │ ├── ProjectStatus.cs │ │ │ │ ├── Specifications/ │ │ │ │ │ ├── IncompleteItemsSearchSpec.cs │ │ │ │ │ ├── IncompleteItemsSpec.cs │ │ │ │ │ ├── ProjectByIdWithItemsSpec.cs │ │ │ │ │ └── ProjectsWithItemsByContributorId.cs │ │ │ │ ├── ToDoItem.cs │ │ │ │ ├── ToDoItemDescription.cs │ │ │ │ ├── ToDoItemId.cs │ │ │ │ └── ToDoItemTitle.cs │ │ │ └── Services/ │ │ │ ├── DeleteContributorService.cs │ │ │ └── ToDoItemSearchService.cs │ │ ├── NimblePros.SampleToDo.Infrastructure/ │ │ │ ├── Data/ │ │ │ │ ├── AppDbContext.cs │ │ │ │ ├── Config/ │ │ │ │ │ ├── ContributorConfiguration.cs │ │ │ │ │ ├── DataSchemaConstants.cs │ │ │ │ │ ├── ProjectConfiguration.cs │ │ │ │ │ ├── ToDoItemConfiguration.cs │ │ │ │ │ ├── VogenEfCoreConverters.cs │ │ │ │ │ └── VogenIdValueGenerator.cs │ │ │ │ ├── EfRepository.cs │ │ │ │ ├── EventDispatchInterceptor.cs │ │ │ │ └── Queries/ │ │ │ │ ├── FakeListContributorsQueryService.cs │ │ │ │ ├── FakeListIncompleteItemsQueryService.cs │ │ │ │ ├── FakeListProjectsShallowQueryService.cs │ │ │ │ ├── ListContributorsQueryService.cs │ │ │ │ ├── ListIncompleteItemsQueryService.cs │ │ │ │ └── ListProjectsShallowQueryService.cs │ │ │ ├── Email/ │ │ │ │ ├── FakeEmailSender.cs │ │ │ │ ├── MailserverConfiguration.cs │ │ │ │ ├── MimeKitEmailSender.cs │ │ │ │ └── SmtpEmailSender.cs │ │ │ ├── GlobalUsings.cs │ │ │ ├── InfrastructureServiceExtensions.cs │ │ │ └── NimblePros.SampleToDo.Infrastructure.csproj │ │ ├── NimblePros.SampleToDo.ServiceDefaults/ │ │ │ ├── Extensions.cs │ │ │ └── NimblePros.SampleToDo.ServiceDefaults.csproj │ │ ├── NimblePros.SampleToDo.UseCases/ │ │ │ ├── Constants.cs │ │ │ ├── Contributors/ │ │ │ │ ├── Commands/ │ │ │ │ │ ├── Create/ │ │ │ │ │ │ ├── CreateContributorCommand.cs │ │ │ │ │ │ └── CreateContributorHandler.cs │ │ │ │ │ ├── Delete/ │ │ │ │ │ │ ├── DeleteContributorCommand.cs │ │ │ │ │ │ └── DeleteContributorHandler.cs │ │ │ │ │ └── Update/ │ │ │ │ │ ├── UpdateContributorCommand.cs │ │ │ │ │ └── UpdateContributorHandler.cs │ │ │ │ ├── ContributorDTO.cs │ │ │ │ └── Queries/ │ │ │ │ ├── Get/ │ │ │ │ │ ├── GetContributorHandler.cs │ │ │ │ │ └── GetContributorQuery.cs │ │ │ │ └── List/ │ │ │ │ ├── IListContributorsQueryService.cs │ │ │ │ ├── ListContributorsHandler.cs │ │ │ │ └── ListContributorsQuery.cs │ │ │ ├── GlobalUsings.cs │ │ │ ├── ICacheable.cs │ │ │ ├── NimblePros.SampleToDo.UseCases.csproj │ │ │ ├── PagedResult.cs │ │ │ ├── Projects/ │ │ │ │ ├── AddToDoItem/ │ │ │ │ │ ├── AddToDoItemCommand.cs │ │ │ │ │ └── AddToDoItemHandler.cs │ │ │ │ ├── Create/ │ │ │ │ │ ├── CreateProjectCommand.cs │ │ │ │ │ └── CreateProjectHandler.cs │ │ │ │ ├── Delete/ │ │ │ │ │ ├── DeleteProjectCommand.cs │ │ │ │ │ └── DeleteProjectHandler.cs │ │ │ │ ├── GetWithAllItems/ │ │ │ │ │ ├── GetProjectWithAllItemsHandler.cs │ │ │ │ │ └── GetProjectWithAllItemsQuery.cs │ │ │ │ ├── ListIncompleteItems/ │ │ │ │ │ ├── IListIncompleteItemsQueryService.cs │ │ │ │ │ ├── ListIncompleteItemsByProjectHandler.cs │ │ │ │ │ └── ListIncompleteItemsByProjectQuery.cs │ │ │ │ ├── ListShallow/ │ │ │ │ │ ├── IListProjectsShallowQueryService.cs │ │ │ │ │ ├── ListProjectsShallowHandler.cs │ │ │ │ │ └── ListProjectsShallowQuery.cs │ │ │ │ ├── MarkToDoItemComplete/ │ │ │ │ │ ├── MarkToDoItemCompleteCommand.cs │ │ │ │ │ └── MarkToDoItemCompleteHandler.cs │ │ │ │ ├── ProjectDTO.cs │ │ │ │ ├── ProjectWithAllItemsDTO.cs │ │ │ │ ├── ToDoItemDTO.cs │ │ │ │ └── Update/ │ │ │ │ ├── UpdateProjectCommand.cs │ │ │ │ └── UpdateProjectHandler.cs │ │ │ └── README.md │ │ └── NimblePros.SampleToDo.Web/ │ │ ├── CachingBehavior.cs │ │ ├── Configurations/ │ │ │ ├── CachingOptions.cs │ │ │ ├── CachingProfile.cs │ │ │ ├── GlobalExceptionHandler.cs │ │ │ ├── LoggerConfig.cs │ │ │ ├── MediatorConfig.cs │ │ │ ├── MiddlewareConfig.cs │ │ │ ├── OptionConfigs.cs │ │ │ └── ServiceConfigs.cs │ │ ├── Contributors/ │ │ │ ├── ContributorRecord.cs │ │ │ ├── Create.cs │ │ │ ├── Delete.DeleteContributorRequest.cs │ │ │ ├── Delete.DeleteContributorValidator.cs │ │ │ ├── Delete.cs │ │ │ ├── GetById.GetContributorByIdMapper.cs │ │ │ ├── GetById.GetContributorByIdRequest.cs │ │ │ ├── GetById.GetContributorValidator.cs │ │ │ ├── GetById.cs │ │ │ ├── List.ContributorListResponse.cs │ │ │ ├── List.cs │ │ │ ├── Update.UpdateContributorRequest.cs │ │ │ ├── Update.UpdateContributorResponse.cs │ │ │ ├── Update.UpdateContributorValidator.cs │ │ │ └── Update.cs │ │ ├── Extensions/ │ │ │ └── ResultExtensions.cs │ │ ├── GlobalUsings.cs │ │ ├── LoggingBehavior.cs │ │ ├── NimblePros.SampleToDo.Web.csproj │ │ ├── Program.cs │ │ ├── Projects/ │ │ │ ├── Create.CreateProjectRequest.cs │ │ │ ├── Create.CreateProjectResponse.cs │ │ │ ├── Create.CreateProjectValidator.cs │ │ │ ├── Create.cs │ │ │ ├── CreateToDoItem.CreateToDoItemRequest.cs │ │ │ ├── CreateToDoItem.CreateToDoItemValidator.cs │ │ │ ├── CreateToDoItem.cs │ │ │ ├── Delete.DeleteProjectRequest.cs │ │ │ ├── Delete.DeleteProjectValidator.cs │ │ │ ├── Delete.cs │ │ │ ├── GetById.GetProjectByIdRequest.cs │ │ │ ├── GetById.GetProjectByIdResponse.cs │ │ │ ├── GetById.GetProjectByIdValidator.cs │ │ │ ├── GetById.cs │ │ │ ├── List.ProjectListResponse.cs │ │ │ ├── List.cs │ │ │ ├── ListIncompleteItems.ListIncompleteItemsRequest.cs │ │ │ ├── ListIncompleteItems.ListIncompleteItemsResponse.cs │ │ │ ├── ListIncompleteItems.cs │ │ │ ├── MarkItemComplete.MarkItemCompleteRequest.cs │ │ │ ├── MarkItemComplete.cs │ │ │ ├── ProjectRecord.cs │ │ │ ├── ToDoItemRecord.cs │ │ │ ├── Update.UpdateProjectRequest.cs │ │ │ ├── Update.UpdateProjectRequestValidator.cs │ │ │ ├── Update.UpdateProjectResponse.cs │ │ │ └── Update.cs │ │ ├── Properties/ │ │ │ └── launchSettings.json │ │ ├── SeedData.cs │ │ ├── api.http │ │ ├── appsettings.json │ │ ├── i18n/ │ │ │ ├── en/ │ │ │ │ └── Project.json │ │ │ ├── fa/ │ │ │ │ └── Project.json │ │ │ └── fr/ │ │ │ └── Project.json │ │ └── wwwroot/ │ │ ├── css/ │ │ │ └── site.css │ │ ├── js/ │ │ │ └── site.js │ │ └── lib/ │ │ ├── bootstrap/ │ │ │ ├── LICENSE │ │ │ └── dist/ │ │ │ ├── css/ │ │ │ │ ├── bootstrap-grid.css │ │ │ │ ├── bootstrap-grid.rtl.css │ │ │ │ ├── bootstrap-reboot.css │ │ │ │ ├── bootstrap-reboot.rtl.css │ │ │ │ ├── bootstrap-utilities.css │ │ │ │ ├── bootstrap-utilities.rtl.css │ │ │ │ ├── bootstrap.css │ │ │ │ └── bootstrap.rtl.css │ │ │ └── js/ │ │ │ ├── bootstrap.bundle.js │ │ │ ├── bootstrap.esm.js │ │ │ └── bootstrap.js │ │ ├── jquery/ │ │ │ ├── LICENSE.txt │ │ │ └── dist/ │ │ │ └── jquery.js │ │ ├── jquery-validation/ │ │ │ ├── LICENSE.md │ │ │ └── dist/ │ │ │ ├── additional-methods.js │ │ │ └── jquery.validate.js │ │ └── jquery-validation-unobtrusive/ │ │ ├── LICENSE.txt │ │ └── jquery.validate.unobtrusive.js │ └── tests/ │ ├── NimblePros.SampleToDo.FunctionalTests/ │ │ ├── Contributors/ │ │ │ ├── ContributorCreate.cs │ │ │ ├── ContributorDelete.cs │ │ │ ├── ContributorGetById.cs │ │ │ ├── ContributorList.cs │ │ │ └── ContributorUpdate.cs │ │ ├── CustomWebApplicationFactory.cs │ │ ├── Fixtures/ │ │ │ └── SmtpServerFixture.cs │ │ ├── GlobalUsings.cs │ │ ├── NimblePros.SampleToDo.FunctionalTests.csproj │ │ ├── Projects/ │ │ │ ├── CreateToDoItemRequestBuilder.cs │ │ │ ├── ProjectAddToDoItem.cs │ │ │ ├── ProjectCreate.cs │ │ │ ├── ProjectGetById.cs │ │ │ ├── ProjectItemMarkComplete.cs │ │ │ └── ProjectList.cs │ │ ├── TestBase.cs │ │ └── xunit.runner.json │ ├── NimblePros.SampleToDo.IntegrationTests/ │ │ ├── Data/ │ │ │ ├── BaseEfRepoTestFixture.cs │ │ │ ├── EfRepositoryAdd.cs │ │ │ ├── EfRepositoryDelete.cs │ │ │ └── EfRepositoryUpdate.cs │ │ ├── GlobalUsings.cs │ │ └── NimblePros.SampleToDo.IntegrationTests.csproj │ └── NimblePros.SampleToDo.UnitTests/ │ ├── Core/ │ │ ├── ContributorAggregate/ │ │ │ ├── ContributorConstructor.cs │ │ │ └── ContributorIdFrom.cs │ │ ├── Handlers/ │ │ │ └── ItemCompletedEmailNotificationHandlerHandle.cs │ │ ├── ProjectAggregate/ │ │ │ ├── ProjectConstructor.cs │ │ │ ├── ProjectNameFrom.cs │ │ │ ├── Project_AddItem.cs │ │ │ ├── ToDoItemConstructor.cs │ │ │ └── ToDoItemMarkComplete.cs │ │ ├── Services/ │ │ │ ├── DeleteContributorSevice_DeleteContributor.cs │ │ │ ├── ToDoItemSearchServiceTests.cs │ │ │ ├── ToDoItemSearchService_GetAllIncompleteItems.cs │ │ │ └── ToDoItemSearchService_GetNextIncompleteItem.cs │ │ └── Specifications/ │ │ └── IncompleteItemSpecificationsConstructor.cs │ ├── GlobalUsings.cs │ ├── NimblePros.SampleToDo.UnitTests.csproj │ ├── NoOpMediator.cs │ ├── ToDoItemBuilder.cs │ ├── UseCases/ │ │ └── Contributors/ │ │ ├── CreateContributorHandlerHandle.cs │ │ ├── GetContributorHandlerHandle.cs │ │ └── UpdateContributorHandlerHandle.cs │ └── xunit.runner.json ├── src/ │ ├── Clean.Architecture.AspireHost/ │ │ ├── AppHost.cs │ │ ├── Clean.Architecture.AspireHost.csproj │ │ ├── GlobalUsings.cs │ │ ├── Properties/ │ │ │ └── launchSettings.json │ │ ├── README.md │ │ ├── appsettings.Development.json │ │ └── appsettings.json │ ├── Clean.Architecture.Core/ │ │ ├── Clean.Architecture.Core.csproj │ │ ├── Clean.Architecture.Core.sln │ │ ├── ContributorAggregate/ │ │ │ ├── Contributor.cs │ │ │ ├── ContributorId.cs │ │ │ ├── ContributorName.cs │ │ │ ├── ContributorStatus.cs │ │ │ ├── Events/ │ │ │ │ ├── ContributorDeletedEvent.cs │ │ │ │ └── ContributorNameUpdatedEvent.cs │ │ │ ├── Handlers/ │ │ │ │ ├── ContributorDeletedHandler.cs │ │ │ │ └── ContributorNameUpdatedEmailNotificationHandler.cs │ │ │ ├── PhoneNumber.cs │ │ │ └── Specifications/ │ │ │ └── ContributorByIdSpec.cs │ │ ├── GlobalUsings.cs │ │ ├── Interfaces/ │ │ │ ├── IDeleteContributorService.cs │ │ │ └── IEmailSender.cs │ │ ├── README.md │ │ └── Services/ │ │ └── DeleteContributorService.cs │ ├── Clean.Architecture.Infrastructure/ │ │ ├── Clean.Architecture.Infrastructure.csproj │ │ ├── Data/ │ │ │ ├── AppDbContext.cs │ │ │ ├── AppDbContextExtensions.cs │ │ │ ├── Config/ │ │ │ │ ├── ContributorConfiguration.cs │ │ │ │ ├── DataSchemaConstants.cs │ │ │ │ ├── VogenEfCoreConverters.cs │ │ │ │ └── VogenIdValueGenerator.cs │ │ │ ├── EfRepository.cs │ │ │ ├── EventDispatcherInterceptor.cs │ │ │ ├── Migrations/ │ │ │ │ ├── 20231218143922_PhoneNumber.Designer.cs │ │ │ │ ├── 20231218143922_PhoneNumber.cs │ │ │ │ ├── 20251113164108_UpdateForNet10.Designer.cs │ │ │ │ ├── 20251113164108_UpdateForNet10.cs │ │ │ │ └── AppDbContextModelSnapshot.cs │ │ │ ├── Queries/ │ │ │ │ ├── FakeListContributorsQueryService.cs │ │ │ │ └── ListContributorsQueryService.cs │ │ │ └── SeedData.cs │ │ ├── Email/ │ │ │ ├── FakeEmailSender.cs │ │ │ ├── MailserverConfiguration.cs │ │ │ └── MimeKitEmailSender.cs │ │ ├── GlobalUsings.cs │ │ ├── InfrastructureServiceExtensions.cs │ │ └── README.md │ ├── Clean.Architecture.ServiceDefaults/ │ │ ├── Clean.Architecture.ServiceDefaults.csproj │ │ └── Extensions.cs │ ├── Clean.Architecture.UseCases/ │ │ ├── Clean.Architecture.UseCases.csproj │ │ ├── Constants.cs │ │ ├── Contributors/ │ │ │ ├── ContributorDTO.cs │ │ │ ├── Create/ │ │ │ │ ├── CreateContributorCommand.cs │ │ │ │ └── CreateContributorHandler.cs │ │ │ ├── Delete/ │ │ │ │ ├── DeleteContributorCommand.cs │ │ │ │ └── DeleteContributorHandler.cs │ │ │ ├── Get/ │ │ │ │ ├── GetContributorHandler.cs │ │ │ │ └── GetContributorQuery.cs │ │ │ ├── List/ │ │ │ │ ├── IListContributorsQueryService.cs │ │ │ │ ├── ListContributorsHandler.cs │ │ │ │ └── ListContributorsQuery.cs │ │ │ └── Update/ │ │ │ ├── UpdateContributorCommand.cs │ │ │ └── UpdateContributorHandler.cs │ │ ├── GlobalUsings.cs │ │ ├── PagedResult.cs │ │ └── README.md │ └── Clean.Architecture.Web/ │ ├── Clean.Architecture.Web.csproj │ ├── Configurations/ │ │ ├── LoggerConfigs.cs │ │ ├── MediatorConfig.cs │ │ ├── MiddlewareConfig.cs │ │ ├── OptionConfigs.cs │ │ └── ServiceConfigs.cs │ ├── Contributors/ │ │ ├── ContributorRecord.cs │ │ ├── Create.cs │ │ ├── Delete.DeleteContributorRequest.cs │ │ ├── Delete.DeleteContributorValidator.cs │ │ ├── Delete.cs │ │ ├── GetById.GetContributorByIdRequest.cs │ │ ├── GetById.GetContributorValidator.cs │ │ ├── GetById.cs │ │ ├── List.cs │ │ ├── Update.UpdateContributorRequest.cs │ │ ├── Update.UpdateContributorResponse.cs │ │ ├── Update.UpdateContributorValidator.cs │ │ └── Update.cs │ ├── Extensions/ │ │ └── ResultExtensions.cs │ ├── GlobalUsings.cs │ ├── Program.cs │ ├── Properties/ │ │ └── launchSettings.json │ ├── api.http │ ├── appsettings.Development.json │ ├── appsettings.Testing.json │ ├── appsettings.json │ └── wwwroot/ │ └── .gitkeep └── tests/ ├── Clean.Architecture.AspireTests/ │ ├── AspireIntegrationTests.cs │ └── Clean.Architecture.AspireTests.csproj ├── Clean.Architecture.FunctionalTests/ │ ├── ApiEndpoints/ │ │ ├── ContributorGetById.cs │ │ └── ContributorList.cs │ ├── Clean.Architecture.FunctionalTests.csproj │ ├── CustomWebApplicationFactory.cs │ ├── DockerAvailabilityTests.cs │ ├── GlobalUsings.cs │ └── xunit.runner.json ├── Clean.Architecture.IntegrationTests/ │ ├── Clean.Architecture.IntegrationTests.csproj │ ├── Data/ │ │ ├── BaseEfRepoTestFixture.cs │ │ ├── EfRepositoryAdd.cs │ │ ├── EfRepositoryDelete.cs │ │ └── EfRepositoryUpdate.cs │ ├── GlobalUsings.cs │ └── xunit.runner.json └── Clean.Architecture.UnitTests/ ├── Clean.Architecture.UnitTests.csproj ├── Core/ │ ├── ContributorAggregate/ │ │ ├── ContributorConstructor.cs │ │ ├── ContributorIdFrom.cs │ │ ├── ContributorNameFrom.cs │ │ └── ContributorUpdateName.cs │ └── Services/ │ ├── DeleteContributorSevice_DeleteContributor.cs │ ├── ToDoItemSearchService_GetAllIncompleteItems.cs │ └── ToDoItemSearchService_GetNextIncompleteItem.cs ├── GlobalUsings.cs ├── NoOpMediator.cs ├── UseCases/ │ └── Contributors/ │ └── CreateContributorHandlerHandle.cs └── xunit.runner.json