🧙‍♂️ 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/            
│   ├── Liber_Incantamentum.Application/     
│   ├── Liber_Incantamentum.Domain/        
│   └── Liber_Incantamentum.Infrastructure/   
│
└── tests/
    ├── Liber_Incantamentum.Tests.Unit/      
    └── Liber_Incantamentum.Tests.Integration/

🔁 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

Technologies utilisées

  • C# / .NET 9
  • ASP.NET Core Web API
  • xUnit / Moq / FluentAssertions / Coverlet
  • Postman
  • Git + GitFlow
Description
No description provided
Readme 100 KiB
Languages
C# 100%