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