2025-07-05 11:33:06 +02:00

156 lines
4.3 KiB
Markdown
Raw Permalink Blame History

This file contains ambiguous Unicode characters

This file contains Unicode characters that might be confused with other characters. If you think that this is intentional, you can safely ignore this warning. Use the Escape button to reveal them.

# 🧙‍♂️ 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 dinté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 dinté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 dune version stable |
| `hotfix/*` | Corrections urgentes sur `master` |
---
## ▶️ Lancer le projet
```bash
# Compilation
dotnet build
# Lancer lAPI
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