Kanban-style ticket tracker (Hackathon Ticketing System). See appRequirements.md for the full requirements and current deviations.
- API: ASP.NET Core 10 Web API (Clean Architecture: Domain → Application → Infrastructure → Web).
- Client: Blazor WebAssembly SPA, served by nginx in a separate container.
- Database: PostgreSQL 16.
- Tests: NUnit (unit + API + UI). UI tests use Microsoft.Playwright.
src/
TaskTrackerApp.Domain — entities, enums (empty in this bootstrap)
TaskTrackerApp.Application — services, interfaces, IEmailSender abstraction
TaskTrackerApp.Shared — DTOs shared between Client and Web
TaskTrackerApp.Infrastructure — EF Core (Postgres), AutoVerifyEmailSender stub
TaskTrackerApp.Web — Web API, /healthz, CORS
TaskTrackerApp.Client — Blazor WASM SPA
tests/
TaskTrackerApp.UnitTests — NUnit smoke test
TaskTrackerApp.ApiTests — NUnit + WebApplicationFactory<Program>
TaskTrackerApp.UiTests — NUnit + Playwright
- .NET 10 SDK — https://dotnet.microsoft.com/download
- Docker Desktop (for
docker compose up --build) - PowerShell 7+ (for Playwright's
playwright.ps1install script)
Primary path (matches the requirements' DoD):
docker compose up --buildThen open:
- Client: http://localhost:5080
- API health: http://localhost:8080/healthz
- Mailpit inbox (dev SMTP viewer): http://localhost:8025
Local .NET fallback (two terminals):
dotnet run --project src/TaskTrackerApp.Web/TaskTrackerApp.Web.csproj
dotnet run --project src/TaskTrackerApp.Client/TaskTrackerApp.Client.csproj# All
dotnet test TaskTrackerApp.slnx
# Individual projects
dotnet test tests/TaskTrackerApp.UnitTests
dotnet test tests/TaskTrackerApp.ApiTests
dotnet test tests/TaskTrackerApp.UiTestsFirst-time Playwright browser install (one-time):
dotnet build tests/TaskTrackerApp.UiTests
pwsh tests/TaskTrackerApp.UiTests/bin/Debug/net10.0/playwright.ps1 installThe UI tests target http://localhost:5080 by default. Override with $env:UI_TESTS_BASE_URL.
Skills live in .claude/skills/ and are invocable in Claude Code:
/start-app—docker compose up --build./run-tests [unit|api|ui]— run one or all test projects./deploy [api|client]— publish artifacts and build Docker images.
Documented at the top of appRequirements.md. Highlights:
- Outbound email is routed to a local Mailpit container (
mailpit:1025inside Docker,localhost:1025on the host). No mail leaves the machine — open http://localhost:8025 to view sent messages. Switch to your organization's SMTP relay by editingEmailSender:Smtpinappsettings.json(or theEmailSender__Smtp__*env vars indocker-compose.yml) once credentials are available.AutoVerifyEmailSenderremains as a fallback for offline/test runs and is selected by settingEmailSender:ModetoAutoVerify.