Development
The local environment runs on .NET Aspire: one AppHost starts the pgvector database, Ollama, the API and the Vite dev server. CONTRIBUTING.md lists the checks that run on every pull request and the conventions used in the code base.
Prerequisites
Section titled “Prerequisites”- .NET 10 SDK
- Node.js 22 — enable
pnpmwithcorepack enable - Docker Desktop (Aspire starts the pgvector database as a container; it must be running)
- Git
Running locally with Aspire
Section titled “Running locally with Aspire”-
Clone the repository and install the dependencies:
Terminal git clone https://github.com/mregni/BoardGameTracker.gitcd BoardGameTrackerdotnet restorecorepack enablecd boardgametracker.clientpnpm install -
Optionally configure SMTP. Without your own SMTP settings Aspire points at
smtp.example.com: the email features show up but sending fails. To test email, put your provider’s settings, or those of a local catcher such as smtp4dev or Mailpit, in the AppHost’s user-secrets store so they stay out of source control (theSmtpsection inBoardGameTracker.AppHost/appsettings.Development.jsonlists every key):Terminal dotnet user-secrets set "Smtp:Host" "smtp.your-provider.com" --project BoardGameTracker.AppHostdotnet user-secrets set "Smtp:Username" "<your-smtp-user>" --project BoardGameTracker.AppHostdotnet user-secrets set "Smtp:FromAddress" "noreply@your-domain.com" --project BoardGameTracker.AppHostdotnet user-secrets set "Parameters:smtp-password" "<your-smtp-password>" --project BoardGameTracker.AppHost -
Start the whole stack:
Terminal dotnet run --project BoardGameTracker.AppHost --launch-profile httpThis launches the Aspire dashboard and, as separate resources, the database, Ollama, the API and the UI. All backend configuration (database, auth, SMTP, AI/RAG, …) is defined in
BoardGameTracker.AppHost/AppHost.cs; thehttpandhttpslaunch profiles are inBoardGameTracker.AppHost/Properties/launchSettings.json, and the Host project has nolaunchSettings.json. -
Once the resources are healthy, open:
- UI —
http://localhost:5443 - API & Swagger —
http://localhost:6554/swagger - Aspire dashboard — the URL printed in the console at startup
The database is created and migrated automatically on first run, and its data persists in a Docker volume across restarts.
- UI —
dotnet testcd boardgametracker.clientpnpm test:runThe integration tests start a PostgreSQL container, so Docker must be running.