diff --git a/README.md b/README.md index 8eefb03..1561097 100644 --- a/README.md +++ b/README.md @@ -1 +1,156 @@ -# Liber_Incantamentum \ No newline at end of file +# 🧙‍♂️ Liber_Incantamentum + +> API RESTful de gestion de sortilèges développée en .NET 9 avec Clean Architecture. + +--- + +## 🎯 Objectif + +Développer une API professionnelle respectant les bonnes pratiques modernes : + +- Clean Architecture modulaire +- 5 routes REST (GET, POST, PUT, PATCH, DELETE) +- Sécurité minimale via token ou clé API +- Tests unitaires et d’intégration +- GitFlow avec issues & PR +- Documentation complète avec Postman + +--- + +## 🛠️ Stack technique + +| Composant | Technologie | +|------------------|----------------------------------| +| Langage | C# (.NET 9) | +| Framework | ASP.NET Core Web API | +| ORM | Entity Framework Core | +| Authentification | Middleware + Header `X-API-KEY` | +| Tests unitaires | xUnit, Moq, FluentAssertions | +| Couverture | Coverlet | +| Documentation | Postman + README.md | +| Gestion Git | GitFlow | + +--- + +## 📦 Architecture du projet + +``` +Liber_Incantamentum/ +│ +├── src/ +│ ├── Liber_Incantamentum.Api/ → API (controllers, middlewares) +│ ├── Liber_Incantamentum.Application/ → Use cases (logique métier) +│ ├── Liber_Incantamentum.Domain/ → Entités, Enums, Interfaces +│ └── Liber_Incantamentum.Infrastructure/ → Persistance (ex: EF Core) +│ +└── tests/ + ├── Liber_Incantamentum.Tests.Unit/ → Tests unitaires + └── Liber_Incantamentum.Tests.Integration/→ Tests d’intégration & sécurité +``` + +--- + +## 🔁 Cycle de développement + +1. Création des issues dans Gitea +2. Développement par fonctionnalité dans une branche `feature/{id-nom}` +3. Écriture de tests unitaires +4. PR vers `develop` + revue par développeur senior +5. Correction ou validation +6. Merge dans `develop` +7. Non-régression (tests, sécurité, fonctionnement) +8. Merge vers `master` après validation +9. Seconde non-régression + +--- + +## 🔐 Sécurité (clé API) + +Toutes les routes sont protégées par une clé API : + +- Clé attendue dans le header `X-API-KEY` +- Middleware qui bloque si la clé est absente ou invalide +- Code de réponse HTTP : + - `401 Unauthorized` si clé manquante + - `403 Forbidden` si clé invalide + +--- + +## 🌐 Routes REST + +| Méthode | Route | Description | +|---------|-------------------|-------------------------------------| +| GET | `/spells` | Lister tous les sortilèges | +| GET | `/spells/{id}` | Obtenir un sortilège spécifique | +| POST | `/spells` | Créer un nouveau sortilège | +| PUT | `/spells/{id}` | Remplacer un sortilège | +| PATCH | `/spells/{id}` | Modifier partiellement un sortilège | +| DELETE | `/spells/{id}` | Supprimer un sortilège | + +--- + +## 🧪 Tests attendus + +- ✅ Tests unitaires avec xUnit +- ✅ Mocks avec Moq +- ✅ Assertions expressives via FluentAssertions +- ✅ Couverture via Coverlet +- ✅ Tests d'intégration du middleware de sécurité + +--- + +## 🧪 Non-régression via Postman + +- Une collection Postman est utilisée pour tester toutes les routes +- Elle est exécutée à chaque release (`develop` puis `master`) + +--- + +## 🔀 GitFlow utilisé + +| Branche | Description | +|---------------|--------------------------------------| +| `master` | Code de production stable | +| `develop` | Code en cours de développement | +| `feature/*` | Nouvelles fonctionnalités | +| `release/*` | Préparation d’une version stable | +| `hotfix/*` | Corrections urgentes sur `master` | + +--- + +## ▶️ Lancer le projet + +```bash +# Compilation +dotnet build + +# Lancer l’API +dotnet run --project src/Liber_Incantamentum.Api +``` + +--- + +## 🧪 Lancer les tests + +```bash +dotnet test +``` + +--- + +## ✅ Fichiers présents à la racine + +- `Liber_Incantamentum.sln` — Solution .NET +- `.editorconfig` — Convention de code +- `.gitignore` — Fichiers à ignorer +- `README.md` — Documentation du projet + +--- + +## ✨ Technologies utilisées + +- C# / .NET 9 +- ASP.NET Core Web API +- xUnit / Moq / FluentAssertions / Coverlet +- Postman +- Git + GitFlow \ No newline at end of file