Skip to content

Commit 479b77e

Browse files
author
maxence
committed
add claude
1 parent 0abf1a2 commit 479b77e

1 file changed

Lines changed: 103 additions & 0 deletions

File tree

‎CLAUDE.md‎

Lines changed: 103 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,103 @@
1+
# TableMasterApi — Contexte Claude Code
2+
3+
Répondre en français. Limiter les changements strictement à la demande.
4+
5+
## Vue d'ensemble
6+
7+
API REST + temps réel pour la plateforme TableMaster (gestion de réservations de restaurants, salles, tables, menus, avis, notifications push).
8+
9+
- **Stack** : ASP.NET Core API, **net10.0**, C# nullable activé.
10+
- **DB** : PostgreSQL via **Dapper** + **Npgsql**.
11+
- **Migrations** : **DbUp PostgreSQL**, scripts SQL embarqués dans `TableMasterApi/sql-scripts/` (préfixés par numéro de séquence, idempotents quand possible).
12+
- **Auth** : JWT Bearer, refresh tokens persistés.
13+
- **Temps réel** : SignalR (`ReservationHub` mappé sur `/reservationHub`).
14+
- **Notifications push** : Firebase Admin (FCM).
15+
- **Versioning API** : `Asp.Versioning.Mvc`, version par défaut `1.0`, header `x-api-version`.
16+
- **Doc** : Swagger en dev ou si `Features:EnableSwagger`.
17+
- **Tests** : xUnit, Moq, FluentAssertions.
18+
19+
## Structure du repo
20+
21+
```
22+
TableMasterApi.sln
23+
TableMasterApi/ API
24+
├── Controllers/ endpoints HTTP versionnés (Auth, Reservation, Restaurant, Room, Table, Menu, Review, User, DailyActivity, ClosedDayException, DeviceToken)
25+
├── DAL/ accès données Dapper
26+
│ ├── Interfaces/ contrats mockables
27+
│ └── Handlers/ type handlers Dapper (ex: PostgresTimeSpanHandler)
28+
├── Model/ DTO, entités, configs
29+
├── Service/ JWT, FCM, Google Maps, DB connection, current user, health checks
30+
├── Hubs/ SignalR
31+
├── Middleware/ gestion transversale des erreurs
32+
├── sql-scripts/ migrations DbUp embarquées
33+
├── Program.cs bootstrap + DI
34+
├── Dockerfile
35+
└── docker-compose.yml
36+
TableMasterApi.Tests/ tests unitaires + intégration légère
37+
```
38+
39+
## Commandes
40+
41+
Depuis la racine du repo :
42+
43+
```bash
44+
dotnet restore
45+
dotnet build TableMasterApi.sln
46+
dotnet test
47+
bash run-tests.sh
48+
```
49+
50+
Depuis `TableMasterApi/` :
51+
52+
```bash
53+
dotnet run
54+
docker compose up --build -d
55+
```
56+
57+
## Règles d'architecture
58+
59+
- Controllers **minces** : pas de logique métier ni d'accès DB direct.
60+
- Accès données dans les **DAL**, logique réutilisable dans les **Services**.
61+
- Controllers dépendent des **interfaces DAL**, jamais des classes concrètes.
62+
- Dapper avec **paramètres nommés** uniquement, jamais de concaténation SQL.
63+
- Réutiliser `IDbConnectionFactory` / `PostgresConnectionFactory`.
64+
- `async`/`await` pour tout I/O (DB, services externes).
65+
66+
## Ajouter une feature API
67+
68+
1. Modèle dans `Model/`.
69+
2. Interface DAL dans `DAL/Interfaces/` + implémentation Dapper dans `DAL/`.
70+
3. Controller dans `Controllers/` (route `api/[controller]`, version API).
71+
4. Enregistrer DAL en `AddScoped` dans `Program.cs`.
72+
5. Migration SQL dans `sql-scripts/` avec préfixe numérique suivant la séquence.
73+
6. Tests xUnit ciblés.
74+
7. Si contrat exposé change : prévenir / mettre à jour le mobile.
75+
76+
## Auth & sécurité
77+
78+
- JWT centralisé dans `JwtService`.
79+
- Utilisateur courant via `ICurrentUserService`.
80+
- Refresh + persistance dans les DAL auth/user.
81+
- Health : `/health`, `/ready`.
82+
- **Ne jamais commiter** : `.env`, connection strings, user secrets, clé Firebase (`tablemaster-firebase.json`), secret JWT.
83+
- Ne pas éditer `bin/`, `obj/`, `.vs/` ni sorties générées.
84+
85+
## Tests
86+
87+
- Lancer `dotnet test` avant de terminer si possible.
88+
- Mocker via Moq, assertions via FluentAssertions.
89+
- Ajouter des tests autour de : auth, JWT, refresh token, controllers, DAL, services modifiés.
90+
- Pas de dépendance à un vrai service externe dans les tests.
91+
92+
## Conventions C#
93+
94+
- PascalCase : classes, propriétés, méthodes publiques.
95+
- camelCase : variables locales, paramètres.
96+
- Nullable activé : garder annotations + checks cohérents.
97+
- Réponses HTTP explicites, alignées sur les controllers existants.
98+
- Gérer les cas métier prévisibles ; laisser le middleware traiter l'inattendu.
99+
100+
## Voir aussi
101+
102+
- `AGENTS.md` — instructions étendues.
103+
- `README.md`, `CI_CD.md`, `POSTGRESQL_API_TESTS.md`, `TESTS-QUICK-START.md`.

0 commit comments

Comments
 (0)