# claude-test A Facebook Events replacement webapp for a private friend group. ## Stack - **Backend:** .NET 8 Web API, Clean Architecture, EF Core 8 + Pomelo.EntityFrameworkCore.MySql, NSwag, JWT auth (planned) - **Database:** MySQL - **Frontend:** Vue 3 (Vite), Vuetify 3, TypeScript, Pinia, Axios - **API client:** Auto-generated TypeScript client via NSwag on every backend build - **Version control:** Gitea at https://git.svrcina.eu/martin/claude-test.git ## Project Structure ``` claude-test/ ├── ClaudeTest.sln ├── backend/ │ ├── ClaudeTest.API/ # Controllers, middleware, DI config, nswag.json │ ├── ClaudeTest.Application/ # Services, DTOs, validators (FluentValidation) │ ├── ClaudeTest.Domain/ # Entities, domain interfaces │ │ └── Common/BaseModel.cs # Base entity: Id, Created, Updated, Deleted │ └── ClaudeTest.Infrastructure/ # EF Core, AppDbContext, repositories │ └── Persistence/AppDbContext.cs └── frontend/ # Vue 3 + Vuetify 3 app └── src/api/apiClient.ts # Auto-generated by NSwag (gitignored) ``` ## Conventions - REST API with consistent JSON responses and HTTP status codes - EF Core code-first migrations (never edit migrations manually) - All entities inherit from `BaseModel` (Id, Created, Updated, Deleted) - `AppDbContext` sets `Created`/`Updated` automatically via `ChangeTracker` - All timestamps stored as UTC (`DateTime.UtcNow`) - DTOs for all API input/output (never expose domain entities directly) - FluentValidation for all request validation - Async/await throughout the backend - Vue 3 Composition API (`