Add Readme
This commit is contained in:
parent
5a61b13136
commit
381e856dba
157
README.md
157
README.md
@ -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 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
|
||||||
Loading…
x
Reference in New Issue
Block a user