- Solution with API, Application, Domain, Infrastructure projects - Clean Architecture project references configured - Vue 3 + Vuetify 3 + TypeScript frontend scaffolded Co-Authored-By: Claude Sonnet 4.6 <noreply@anthropic.com>
49 lines
1.7 KiB
Markdown
49 lines
1.7 KiB
Markdown
# claude-test
|
|
|
|
A Facebook Events replacement webapp for a private friend group.
|
|
|
|
## Stack
|
|
|
|
- **Backend:** .NET 8 Web API, Clean Architecture, EF Core 8, FluentValidation, JWT auth
|
|
- **Database:** MySQL
|
|
- **Frontend:** Vue 3 (Vite), Vuetify 3
|
|
- **Version control:** Gitea at https://git.svrcina.eu/martin/claude-test.git
|
|
|
|
## Project Structure (planned)
|
|
|
|
```
|
|
claude-test/
|
|
├── backend/
|
|
│ ├── ClaudeTest.API/ # Controllers, middleware, DI config
|
|
│ ├── ClaudeTest.Application/ # Services, DTOs, validators
|
|
│ ├── ClaudeTest.Domain/ # Entities, domain interfaces
|
|
│ └── ClaudeTest.Infrastructure/# EF Core, repositories, email
|
|
├── frontend/ # Vue 3 + Vuetify 3 app
|
|
└── CLAUDE.md
|
|
```
|
|
|
|
## Conventions
|
|
|
|
- REST API with consistent JSON responses and HTTP status codes
|
|
- EF Core code-first migrations (never edit migrations manually)
|
|
- 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 (`<script setup>`) only — no Options API
|
|
- Pinia for frontend state management
|
|
|
|
## Deployment
|
|
|
|
- **Development:** run natively — .NET CLI, `vite dev`, local MySQL
|
|
- **Production/testing:** Docker Compose with 3 containers:
|
|
- `api` — .NET 8 Web API
|
|
- `frontend` — nginx serving built Vue app
|
|
- `db` — MySQL
|
|
- **Server:** same machine as Gitea (already running Docker)
|
|
- **Reverse proxy:** nginx running on the host, proxying to Docker containers
|
|
|
|
## Development Approach
|
|
|
|
This project is also a learning experience for working effectively with Claude.
|
|
When starting a new feature, use `/plan` to align on approach before writing code.
|