A Kanban board application built with ASP.NET Core and Angular, deployed to Azure Container Apps.
Backend: .NET 8, ASP.NET Core, Entity Framework Core, MediatR, SignalR, Serilog
Frontend: Angular 19, Angular Material 19, NgRx Component Store, RxJS, TypeScript 5.8
Orchestration: .NET Aspire 9.0
Infrastructure: Azure Container Apps, Azure SQL Database, Azure Container Registry, Key Vault, Bicep
CI/CD: GitHub Actions, Azure Developer CLI (azd)
Observability: OpenTelemetry, Health Checks, Log Analytics
Testing: Playwright (E2E), xUnit, Moq (.NET)
src/
Clarity.AppHost/ .NET Aspire orchestration (SQL Server, API, Web)
Clarity.ServiceDefaults/ Shared service configuration (OpenTelemetry, health checks, resilience)
Clarity.Api/ ASP.NET Core Web API (hosts Angular frontend in wwwroot)
Clarity.Core/ Domain models and interfaces
Clarity.Infrastructure/ Data access and EF Core
Clarity.Web/ Angular frontend workspace
projects/
api/ @api library (API models and services)
components/ @components library (shared UI components)
clarity/ Main application
clarity-admin/ Admin application
designs/
clarity.pen UI designs for the main application
test/
Clarity.UnitTests/ .NET unit tests
Clarity.IntegrationTests/ .NET integration tests
Clarity.Testing/ Shared test utilities and builders
infra/
modules/ Bicep modules (Container Apps, SQL Server, Key Vault, Container Registry)
- .NET 9 SDK (includes .NET 8 targeting)
- Node.js 20+
- SQL Server LocalDB or SQL Server Express
- .NET Aspire workload (optional, for orchestrated runs)
- Azure Developer CLI (optional, for deployment)
cd src/Clarity.AppHost
dotnet runThis starts the full stack — SQL Server, API, and Angular frontend — with service discovery, health checks, and the Aspire dashboard.
cd src/Clarity.Api
dotnet runThe API will be available at https://localhost:5001.
cd src/Clarity.Web
npm install
npx ng build @api
npx ng build @components
npm startThe app will be available at http://localhost:4200.
cd src/Clarity.Api
dotnet run -- migratedb # Apply EF Core migrations
dotnet run -- seeddb # Seed sample data
dotnet run -- dropdb # Drop the database
dotnet run -- ci # Drop, migrate, seed, then stopThe Angular workspace has library dependencies that must be built in order:
cd src/Clarity.Web
npm ci
npx ng build @api
npx ng build @components
npx ng build clarity --configuration productionThe application deploys to Azure Container Apps via GitHub Actions on every push to main. The pipeline:
- Builds and tests the .NET solution
- Authenticates with Azure using federated credentials (OIDC)
- Runs
azd deploywhich builds the Angular frontend, copies it to the API'swwwroot, and deploys the container
azd auth login
azd deploydotnet testcd src/Clarity.Web
npx playwright test