Skip to content

Architecture

Claudio is a monorepo with two .NET projects and a React frontend.

ASP.NET minimal API. Serves the SPA as static files and provides REST endpoints. Uses minimal APIs with route groups (no controllers).

Tauri desktop client.

React 19 SPA built with Vite. Output goes to src/claudio-api/wwwroot/. Uses TanStack React Query for data fetching, React Router for routing, and Tailwind CSS v4.

TUnit + AwesomeAssertions test project.

  • Endpoints are in src/claudio-api/Endpoints/ as static classes with extension methods
  • Services are singletons registered in Program.cs
  • Database is EF Core with AppDbContext containing Users and Games tables, supporting SQLite and PostgreSQL
  • API client at src/claudio-web/src/api/client.ts — wraps fetch with JWT auth header injection
  • Auth context at src/claudio-web/src/hooks/useAuth.tsx — JWT parsing, login/register/logout
  • Theming uses CSS custom properties with Tailwind semantic tokens (text-text-primary, bg-surface, etc.)

TOML config loaded from CLAUDIO_CONFIG_PATH or /config/config.toml. NuGet versions are centralized in Directory.Packages.props.