Issue: #12
Prevent broken backend or frontend changes from reaching main. This consolidates and
supersedes the exploratory Toolchain Spike workflow (see
toolchain-spike.md for the original spike record) now that the
checks it proved out are the project’s actual Definition of Done.
File: .github/workflows/ci.yml — job validate-stack.
Triggers on every pull request targeting main, and manually via workflow_dispatch.
Steps:
dotnet-ef).Release).dotnet test)./health and /openapi/v1.json respond.apps/client/package-lock.json.npm ci).npm test, Vitest via Angular CLI, headless).npm run build).No Azure or other cloud credentials are used or required.
Backend:
docker compose up -d postgres
dotnet tool restore
dotnet restore apps/api/ResidentialAmenities.slnx
dotnet build apps/api/ResidentialAmenities.slnx --configuration Release
dotnet ef database update --project apps/api/ResidentialAmenities.Api.csproj --context AppDbContext
dotnet test apps/api/ResidentialAmenities.slnx --configuration Release
Frontend:
cd apps/client
npm ci
npm test
npm run build
apps/client/package-lock.json is committed so both npm ci locally and in CI resolve
the exact same dependency tree.actions/setup-node’s built-in
cache). NuGet caching was intentionally left out because the API project does not use a
packages.lock.json; revisit if restore time becomes a problem.