Documentation Index
Fetch the complete documentation index at: https://docs.aspfox.com/llms.txt
Use this file to discover all available pages before exploring further.
Hot reload
Backend: The API container runsdotnet watch run. Save any .cs file and the application rebuilds incrementally. Changes typically take 2–5 seconds to take effect. You do not need to restart Docker.
Frontend: Vite HMR (Hot Module Replacement) is active in the frontend container. Save any .tsx, .ts, or .css file and the browser updates without a full page reload. React state is preserved for components that are not directly modified.
Makefile reference
All development commands go throughmake. Run any of these from the project root.
| Command | What it does |
|---|---|
make up | Start all services in the background (detached mode) |
make down | Stop all services and remove containers |
make restart | Restart the API container without rebuilding the image |
make logs | Follow logs from all services (Ctrl+C to stop) |
make logs SERVICE=api | Follow logs from the API container only |
make logs SERVICE=frontend | Follow logs from the frontend container only |
make build | Rebuild Docker images and restart all services |
make migrate | Apply any pending EF Core migrations to the database |
make seed | Run database seeders (creates admin user and lookup data) |
make test | Run all tests (backend + frontend) |
make test-backend | Run backend xUnit tests with coverage report |
make test-frontend | Run frontend Vitest tests |
make typecheck | Run TypeScript type checking on the frontend (no emit) |
make lint | Run ESLint on the frontend |
make shell-api | Open a bash shell inside the running API container |
make shell-db | Open a psql session in the database container |
make clean | Remove all containers and volumes (deletes database data) |
make fresh | Full reset: clean + up + migrate + seed |
make release-check | Run all checks that CI runs: typecheck, lint, test |
Adding an EF Core migration
When you modify an entity or add a new one, you need to create a migration and apply it. Step 1: Make sure the database container is running:src/Acme.Infrastructure/Migrations/. Commit it to git alongside the entity changes.
If you need to roll back a migration in development, run
make shell-api and then dotnet ef database update <PreviousMigrationName> inside the container. Then delete the unwanted migration file.