gitextract_y908z1c3/ ├── .aspire/ │ └── settings.json ├── .azdo/ │ └── pipelines/ │ └── azure-dev.yml ├── .devcontainer/ │ ├── README.md │ └── devcontainer.json ├── .editorconfig ├── .github/ │ ├── FUNDING.yml │ ├── ISSUE_TEMPLATE/ │ │ ├── bug_report.md │ │ ├── config.yml │ │ └── feature_request.md │ └── workflows/ │ ├── azure-dev.yml │ ├── build.yml │ ├── codeql.yml │ ├── release.yml │ └── test-templates.yml ├── .gitignore ├── .template.config/ │ ├── dotnetcli.host.json │ ├── ide.host.json │ └── template.json ├── CODE_OF_CONDUCT.md ├── CleanArchitecture.nuspec ├── CleanArchitecture.slnx ├── Directory.Build.props ├── Directory.Packages.props ├── LICENSE ├── README-template.md ├── README.md ├── azure.yaml ├── build/ │ ├── build.ps1 │ ├── repack.ps1 │ └── test.ps1 ├── global.json ├── infra/ │ ├── README.md │ ├── abbreviations.json │ ├── core/ │ │ ├── ai/ │ │ │ ├── cognitiveservices.bicep │ │ │ ├── hub-dependencies.bicep │ │ │ ├── hub.bicep │ │ │ └── project.bicep │ │ ├── config/ │ │ │ └── configstore.bicep │ │ ├── database/ │ │ │ ├── cosmos/ │ │ │ │ ├── cosmos-account.bicep │ │ │ │ ├── mongo/ │ │ │ │ │ ├── cosmos-mongo-account.bicep │ │ │ │ │ └── cosmos-mongo-db.bicep │ │ │ │ └── sql/ │ │ │ │ ├── cosmos-sql-account.bicep │ │ │ │ ├── cosmos-sql-db.bicep │ │ │ │ ├── cosmos-sql-role-assign.bicep │ │ │ │ └── cosmos-sql-role-def.bicep │ │ │ ├── mysql/ │ │ │ │ └── flexibleserver.bicep │ │ │ ├── postgresql/ │ │ │ │ └── flexibleserver.bicep │ │ │ └── sqlserver/ │ │ │ └── sqlserver.bicep │ │ ├── gateway/ │ │ │ └── apim.bicep │ │ ├── host/ │ │ │ ├── ai-environment.bicep │ │ │ ├── aks-agent-pool.bicep │ │ │ ├── aks-managed-cluster.bicep │ │ │ ├── aks.bicep │ │ │ ├── appservice-appsettings.bicep │ │ │ ├── appservice.bicep │ │ │ ├── appserviceplan.bicep │ │ │ ├── container-app-upsert.bicep │ │ │ ├── container-app.bicep │ │ │ ├── container-apps-environment.bicep │ │ │ ├── container-apps.bicep │ │ │ ├── container-registry.bicep │ │ │ ├── functions.bicep │ │ │ └── staticwebapp.bicep │ │ ├── monitor/ │ │ │ ├── applicationinsights-dashboard.bicep │ │ │ ├── applicationinsights.bicep │ │ │ ├── loganalytics.bicep │ │ │ └── monitoring.bicep │ │ ├── networking/ │ │ │ ├── cdn-endpoint.bicep │ │ │ ├── cdn-profile.bicep │ │ │ └── cdn.bicep │ │ ├── search/ │ │ │ └── search-services.bicep │ │ ├── security/ │ │ │ ├── aks-managed-cluster-access.bicep │ │ │ ├── configstore-access.bicep │ │ │ ├── keyvault-access.bicep │ │ │ ├── keyvault-secret.bicep │ │ │ ├── keyvault.bicep │ │ │ ├── registry-access.bicep │ │ │ └── role.bicep │ │ ├── storage/ │ │ │ └── storage-account.bicep │ │ └── testing/ │ │ └── loadtesting.bicep │ ├── main.bicep │ ├── main.parameters.json │ └── services/ │ └── web.bicep ├── renovate.json ├── src/ │ ├── AppHost/ │ │ ├── AppHost.csproj │ │ ├── Program.cs │ │ ├── Properties/ │ │ │ └── launchSettings.json │ │ ├── appsettings.Development.json │ │ └── appsettings.json │ ├── Application/ │ │ ├── Application.csproj │ │ ├── Common/ │ │ │ ├── Behaviours/ │ │ │ │ ├── AuthorizationBehaviour.cs │ │ │ │ ├── LoggingBehaviour.cs │ │ │ │ ├── PerformanceBehaviour.cs │ │ │ │ ├── UnhandledExceptionBehaviour.cs │ │ │ │ └── ValidationBehaviour.cs │ │ │ ├── Exceptions/ │ │ │ │ ├── ForbiddenAccessException.cs │ │ │ │ └── ValidationException.cs │ │ │ ├── Interfaces/ │ │ │ │ ├── IApplicationDbContext.cs │ │ │ │ ├── IIdentityService.cs │ │ │ │ └── IUser.cs │ │ │ ├── Mappings/ │ │ │ │ └── MappingExtensions.cs │ │ │ ├── Models/ │ │ │ │ ├── LookupDto.cs │ │ │ │ ├── PaginatedList.cs │ │ │ │ └── Result.cs │ │ │ └── Security/ │ │ │ └── AuthorizeAttribute.cs │ │ ├── DependencyInjection.cs │ │ ├── GlobalUsings.cs │ │ ├── TodoItems/ │ │ │ ├── Commands/ │ │ │ │ ├── CreateTodoItem/ │ │ │ │ │ ├── CreateTodoItem.cs │ │ │ │ │ └── CreateTodoItemCommandValidator.cs │ │ │ │ ├── DeleteTodoItem/ │ │ │ │ │ └── DeleteTodoItem.cs │ │ │ │ ├── UpdateTodoItem/ │ │ │ │ │ ├── UpdateTodoItem.cs │ │ │ │ │ └── UpdateTodoItemCommandValidator.cs │ │ │ │ └── UpdateTodoItemDetail/ │ │ │ │ └── UpdateTodoItemDetail.cs │ │ │ ├── EventHandlers/ │ │ │ │ ├── LogTodoItemCompleted.cs │ │ │ │ └── LogTodoItemCreated.cs │ │ │ └── Queries/ │ │ │ └── GetTodoItemsWithPagination/ │ │ │ ├── GetTodoItemsWithPagination.cs │ │ │ ├── GetTodoItemsWithPaginationQueryValidator.cs │ │ │ └── TodoItemBriefDto.cs │ │ ├── TodoLists/ │ │ │ ├── Commands/ │ │ │ │ ├── CreateTodoList/ │ │ │ │ │ ├── CreateTodoList.cs │ │ │ │ │ └── CreateTodoListCommandValidator.cs │ │ │ │ ├── DeleteTodoList/ │ │ │ │ │ └── DeleteTodoList.cs │ │ │ │ ├── PurgeTodoLists/ │ │ │ │ │ └── PurgeTodoLists.cs │ │ │ │ └── UpdateTodoList/ │ │ │ │ ├── UpdateTodoList.cs │ │ │ │ └── UpdateTodoListCommandValidator.cs │ │ │ └── Queries/ │ │ │ └── GetTodos/ │ │ │ ├── GetTodos.cs │ │ │ ├── TodoItemDto.cs │ │ │ ├── TodoListDto.cs │ │ │ └── TodosVm.cs │ │ └── WeatherForecasts/ │ │ └── Queries/ │ │ └── GetWeatherForecasts/ │ │ ├── GetWeatherForecastsQuery.cs │ │ └── WeatherForecast.cs │ ├── Domain/ │ │ ├── Common/ │ │ │ ├── BaseAuditableEntity.cs │ │ │ ├── BaseEntity.cs │ │ │ ├── BaseEvent.cs │ │ │ └── ValueObject.cs │ │ ├── Constants/ │ │ │ ├── Policies.cs │ │ │ └── Roles.cs │ │ ├── Domain.csproj │ │ ├── Entities/ │ │ │ ├── TodoItem.cs │ │ │ └── TodoList.cs │ │ ├── Enums/ │ │ │ └── PriorityLevel.cs │ │ ├── Events/ │ │ │ ├── TodoItemCompletedEvent.cs │ │ │ ├── TodoItemCreatedEvent.cs │ │ │ └── TodoItemDeletedEvent.cs │ │ ├── Exceptions/ │ │ │ └── UnsupportedColourException.cs │ │ ├── GlobalUsings.cs │ │ └── ValueObjects/ │ │ └── Colour.cs │ ├── Infrastructure/ │ │ ├── Data/ │ │ │ ├── ApplicationDbContext.cs │ │ │ ├── ApplicationDbContextInitialiser.cs │ │ │ ├── Configurations/ │ │ │ │ ├── TodoItemConfiguration.cs │ │ │ │ └── TodoListConfiguration.cs │ │ │ └── Interceptors/ │ │ │ ├── AuditableEntityInterceptor.cs │ │ │ └── DispatchDomainEventsInterceptor.cs │ │ ├── DependencyInjection.cs │ │ ├── GlobalUsings.cs │ │ ├── Identity/ │ │ │ ├── ApplicationUser.cs │ │ │ ├── IdentityResultExtensions.cs │ │ │ └── IdentityService.cs │ │ └── Infrastructure.csproj │ ├── ServiceDefaults/ │ │ ├── Extensions.cs │ │ └── ServiceDefaults.csproj │ ├── Shared/ │ │ ├── Services.cs │ │ └── Shared.csproj │ └── Web/ │ ├── ClientApp/ │ │ ├── .editorconfig │ │ ├── .gitignore │ │ ├── Dockerfile │ │ ├── README.md │ │ ├── angular.json │ │ ├── default.conf.template │ │ ├── karma.conf.js │ │ ├── nswag.json │ │ ├── package.json │ │ ├── proxy.conf.js │ │ ├── src/ │ │ │ ├── api-authorization/ │ │ │ │ ├── auth.guard.ts │ │ │ │ ├── auth.service.ts │ │ │ │ ├── authorize.interceptor.spec.ts │ │ │ │ ├── authorize.interceptor.ts │ │ │ │ ├── login/ │ │ │ │ │ ├── login.component.html │ │ │ │ │ └── login.component.ts │ │ │ │ └── register/ │ │ │ │ ├── register.component.html │ │ │ │ └── register.component.ts │ │ │ ├── app/ │ │ │ │ ├── app.component.html │ │ │ │ ├── app.component.ts │ │ │ │ ├── app.module.ts │ │ │ │ ├── app.server.module.ts │ │ │ │ ├── counter/ │ │ │ │ │ ├── counter.component.html │ │ │ │ │ ├── counter.component.spec.ts │ │ │ │ │ └── counter.component.ts │ │ │ │ ├── fetch-data/ │ │ │ │ │ ├── fetch-data.component.html │ │ │ │ │ └── fetch-data.component.ts │ │ │ │ ├── home/ │ │ │ │ │ ├── home.component.html │ │ │ │ │ └── home.component.ts │ │ │ │ ├── nav-menu/ │ │ │ │ │ ├── nav-menu.component.html │ │ │ │ │ ├── nav-menu.component.scss │ │ │ │ │ └── nav-menu.component.ts │ │ │ │ ├── theme-toggle/ │ │ │ │ │ ├── theme-toggle.component.html │ │ │ │ │ └── theme-toggle.component.ts │ │ │ │ ├── theme.service.ts │ │ │ │ ├── todo/ │ │ │ │ │ ├── todo.component.html │ │ │ │ │ ├── todo.component.scss │ │ │ │ │ └── todo.component.ts │ │ │ │ └── weather/ │ │ │ │ ├── weather.component.html │ │ │ │ └── weather.component.ts │ │ │ ├── assets/ │ │ │ │ └── .gitkeep │ │ │ ├── environments/ │ │ │ │ ├── environment.prod.ts │ │ │ │ └── environment.ts │ │ │ ├── index.html │ │ │ ├── main.ts │ │ │ ├── polyfills.ts │ │ │ ├── styles.scss │ │ │ └── test.ts │ │ ├── tsconfig.app.json │ │ ├── tsconfig.json │ │ └── tsconfig.spec.json │ ├── ClientApp-React/ │ │ ├── .gitignore │ │ ├── README.md │ │ ├── aspnetcore-https.cjs │ │ ├── index.html │ │ ├── nswag.json │ │ ├── package.json │ │ ├── public/ │ │ │ └── manifest.webmanifest │ │ ├── src/ │ │ │ ├── App.jsx │ │ │ ├── AppRoutes.jsx │ │ │ ├── components/ │ │ │ │ ├── Counter.jsx │ │ │ │ ├── Home.jsx │ │ │ │ ├── Layout.jsx │ │ │ │ ├── NavMenu.jsx │ │ │ │ ├── ThemeContext.jsx │ │ │ │ ├── ThemeToggle.jsx │ │ │ │ ├── Todo.jsx │ │ │ │ ├── Weather.jsx │ │ │ │ └── api-authorization/ │ │ │ │ ├── AuthContext.jsx │ │ │ │ ├── LoginPage.jsx │ │ │ │ ├── ProtectedRoute.jsx │ │ │ │ └── RegisterPage.jsx │ │ │ ├── main.jsx │ │ │ ├── styles.scss │ │ │ └── vite-env.d.ts │ │ ├── tsconfig.json │ │ └── vite.config.ts │ ├── DependencyInjection.cs │ ├── Endpoints/ │ │ ├── TodoItems.cs │ │ ├── TodoLists.cs │ │ ├── Users.cs │ │ └── WeatherForecasts.cs │ ├── GlobalUsings.cs │ ├── Infrastructure/ │ │ ├── ApiExceptionOperationTransformer.cs │ │ ├── BearerSecuritySchemeTransformer.cs │ │ ├── EndpointRouteBuilderExtensions.cs │ │ ├── IEndpointGroup.cs │ │ ├── IdentityApiOperationTransformer.cs │ │ ├── MethodInfoExtensions.cs │ │ ├── ProblemDetailsExceptionHandler.cs │ │ └── WebApplicationExtensions.cs │ ├── Program.cs │ ├── Properties/ │ │ └── launchSettings.json │ ├── Services/ │ │ └── CurrentUser.cs │ ├── Web-webapi.http │ ├── Web.csproj │ ├── Web.http │ ├── appsettings.PostgreSQL.json │ ├── appsettings.SQLServer.json │ ├── appsettings.SQLite.json │ └── appsettings.json ├── templates/ │ └── ca-use-case/ │ ├── .template.config/ │ │ ├── dotnetcli.host.json │ │ └── template.json │ └── FeatureName/ │ ├── Commands/ │ │ └── CleanArchitectureUseCase/ │ │ └── CleanArchitectureUseCase.cs │ └── Queries/ │ └── CleanArchitectureUseCase/ │ └── CleanArchitectureUseCase.cs └── tests/ ├── Application.FunctionalTests/ │ ├── Application.FunctionalTests.csproj │ ├── FunctionalTestSetup.cs │ ├── GlobalUsings.cs │ ├── Infrastructure/ │ │ ├── DatabaseResetter.cs │ │ ├── TestApp.cs │ │ ├── TestBase.cs │ │ └── WebApiFactory.cs │ ├── TodoItems/ │ │ └── Commands/ │ │ ├── CreateTodoItemTests.cs │ │ ├── DeleteTodoItemTests.cs │ │ ├── UpdateTodoItemDetailTests.cs │ │ └── UpdateTodoItemTests.cs │ └── TodoLists/ │ ├── Commands/ │ │ ├── CreateTodoListTests.cs │ │ ├── DeleteTodoListTests.cs │ │ ├── PurgeTodoListsTests.cs │ │ └── UpdateTodoListTests.cs │ └── Queries/ │ └── GetTodosTests.cs ├── Application.UnitTests/ │ ├── Application.UnitTests.csproj │ └── Common/ │ ├── Behaviours/ │ │ └── RequestLoggerTests.cs │ ├── Exceptions/ │ │ └── ValidationExceptionTests.cs │ ├── Mappings/ │ │ └── MappingTests.cs │ └── Models/ │ └── PaginatedListTests.cs ├── Domain.UnitTests/ │ ├── Domain.UnitTests.csproj │ └── ValueObjects/ │ └── ColourTests.cs ├── Infrastructure.IntegrationTests/ │ ├── GlobalUsings.cs │ └── Infrastructure.IntegrationTests.csproj ├── TestAppHost/ │ ├── Program.cs │ └── TestAppHost.csproj └── Web.AcceptanceTests/ ├── AspireSetup.cs ├── Features/ │ ├── Counter.feature │ ├── Home.feature │ ├── Login.feature │ └── Weather.feature ├── GlobalUsings.cs ├── Pages/ │ ├── BasePage.cs │ ├── CounterPage.cs │ ├── HomePage.cs │ ├── LoginPage.cs │ └── WeatherPage.cs ├── PlaywrightSetup.cs ├── StepDefinitions/ │ ├── CounterStepDefinitions.cs │ ├── HomeStepDefinitions.cs │ ├── LoginStepDefinitions.cs │ └── WeatherStepDefinitions.cs └── Web.AcceptanceTests.csproj