Quizer is a full-stack quiz platform with a .NET 10 backend and a React/TypeScript frontend.
# 1) Enter dev shell
nix develop
# 2) Restore backend/frontend dependencies
nix develop -c restore
# 3) Run API (terminal A)
nix develop -c api
# 4) Run web app (terminal B)
nix develop -c webUse the Nix dev shell to guarantee toolchain parity:
nix developThis repository expects:
- .NET SDK 10 (
dotnet) - Node.js 22 (
node) - pnpm 11 (
pnpm)
The provided flake.nix installs and pins these versions.
The backend follows CLEAN architecture with DDD boundaries:
src/Quizer.Domain: aggregates, value objects, domain events, and invariants.src/Quizer.Application: use cases (commands/queries), handlers, and application contracts.src/Quizer.Infrastructure: persistence, authentication, external service implementations, EF Core setup.src/Quizer.Api: HTTP surface (controllers, API wiring, versioning, composition root).src/Quizer.Contracts: request/response contracts shared at the API boundary.
The frontend lives in frontend/ and is a Vite + React application that consumes the API.
src/: backend codetests/: backend unit/integration testsfrontend/: web clientDockerfileanddocker-compose.yml: containerized runtimeQuizer.slnx: backend solution entrypoint
Enter the shell and restore dependencies:
nix develop -c restoreRun backend API:
nix develop -c apiRun frontend dev server:
nix develop -c webCreate a migration:
dotnet ef migrations add -p ./src/Quizer.Infrastructure/Quizer.Infrastructure.csproj -s ./src/Quizer.Api/Quizer.Api.csproj <MigrationName>Apply migrations:
dotnet ef database update -p ./src/Quizer.Infrastructure/Quizer.Infrastructure.csproj -s ./src/Quizer.Api/Quizer.Api.csproj