PoPunkouterSoftware is a .NET 10 Blazor Web App with a server host, a WebAssembly client, and operational endpoints for the Azure inventory report, the app portfolio, and diagnostics.
src/PoPunkouterSoftware.API/: ASP.NET Core host + BFF. Feature slices underFeatures/<Area>/(Config, Diag, Portfolio); host-level plumbing that belongs to no slice lives inHost/. Hosts the Blazor WASM shell.src/PoPunkouterSoftware.Client/: WASM UI, layouts, pages, and static assets.src/PoPunkouterSoftware.Shared/: contracts and models shared between the host and client.src/PoPunkouterSoftware.Infrastructure/: Azure and integration adapters.tests/PoPunkouterSoftware.Unit/: xUnit, strictly no-I/O.tests/PoPunkouterSoftware.Integration/:WebApplicationFactory+ Azurite Testcontainers.tests/PoPunkouterSoftware.E2EAPI/: pure-HTTP contract tests against a live instance.tests/PoPunkouterSoftware.E2EUI/: C# Playwright browser tests (run on demand against a live instance).SCRIPTS/: setup and automation helpers.
Prerequisites:
- .NET SDK from
global.json - Node.js for Playwright tests
- Docker Desktop for Azurite-backed integration scenarios
Common commands:
dotnet build .\PoPunkouterSoftware.sln
dotnet test .\tests\PoPunkouterSoftware.Unit
dotnet test .\tests\PoPunkouterSoftware.IntegrationAvailable VS Code tasks in this workspace include:
buildtest-unitstart-azuritestart-api-serverdeep-clean(removes everybin/andobj/;dotnet cleanleavesobj/behind)
The app runs locally on HTTP port 8000.
/healthis the deep probe (Key Vault, Table Storage);/healthzis a static liveness ping./diagand related/api/diag/*endpoints expose diagnostics details with masked secrets.- Azure behavior prefers Key Vault and managed identity when available, with local fallback configuration for development.
- The client dashboard consumes the shared Azure report models generated by the server and infrastructure layers.
- The Azure dashboard can download
New-AzureEfficiencyReport.ps1, a local Azure CLI audit that generatesazure-inventory-report.htmland a review-onlycleanup_suggestions.ps1with commented commands.
- Unit tests (
PoPunkouterSoftware.Unit) cover pure logic and API helpers, no I/O. - Integration tests (
PoPunkouterSoftware.Integration) cover host configuration, diagnostics endpoints, and Azure Table Storage behavior viaWebApplicationFactory+ Testcontainers Azurite. - E2E tests (
PoPunkouterSoftware.E2EAPI,PoPunkouterSoftware.E2EUI) cover the HTTP contract and browser flows against a live instance; on demand, not in CI.
- Read
AGENT.MDbefore broad changes. - Keep diagnostics endpoints available but do not link them from the UI.
- Preserve Po-prefixed naming and strict build quality defaults from
Directory.Build.props.