Add Readme

This commit is contained in:
blyssco 2025-07-05 11:33:06 +02:00
parent 5a61b13136
commit 381e856dba

157
README.md
View File

@ -1 +1,156 @@
# Liber_Incantamentum # 🧙‍♂️ 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