Un boilerplate d'API REST robuste construit avec NestJS, intégrant Clean Architecture et Domain-Driven Design (DDD).
- Architecture
- Technologies
- Installation
- Démarrage
- Structure du Projet
- Authentification
- Documentation API
Ce projet suit les principes de Clean Architecture avec une séparation claire des responsabilités :
src/
├── application/ # Use cases, commands et queries
├── domain/ # Entités, interfaces et logique métier
├── infrastructure/ # Implémentations techniques (repositories, services)
└── presentation/ # Controllers, DTOs et exceptions
- Framework: NestJS
- ORM: Prisma
- Base de données: MySQL
- Auth: JWT + Refresh Tokens
- Language: TypeScript
- Tests: Jest
- Cloner le repository
git clone https://github.com/Jaybee-v/boilerplate-api.git
cd boilerplate-api- Installer les dépendances
npm install- Configuration
cp .env.example .env- Configurer les variables d'environnement dans
.env:
DATABASE_URL="mysql://user:password@localhost:3306/db_name"
JWT_SECRET="votre-secret-jwt"
JWT_EXPIRATION="1h"
REFRESH_TOKEN_SECRET="votre-secret-refresh"
REFRESH_TOKEN_EXPIRATION="7d"- Préparer la base de données
npx prisma generate
npx prisma migrate dev- Lancer l'application
# Développement
npm run start:dev
# Production
npm run start:prod- Admin: Gestion des administrateurs avec rôles (SUPER_ADMIN, ADMIN)
- Auth: Authentification JWT avec refresh tokens
- Common: Utilitaires et configurations partagés
// Admin Routes
POST /admin // Créer un admin
GET /admin // Liste des admins
GET /admin/:id // Détails d'un admin
PATCH /admin/:id // Modifier un admin
// Auth Routes
POST /auth/login // Connexion
POST /auth/refresh // Rafraîchir le token
POST /auth/logout // DéconnexionLe système d'authentification utilise:
- JWT pour les access tokens
- Refresh tokens stockés en base de données
- Système de rôles (SUPER_ADMIN, ADMIN)
La documentation Swagger est disponible à:
http://localhost:3000/api
# Tests unitaires
npm run test
# Tests e2e
npm run test:e2e
# Couverture
npm run test:covMIT License - voir le fichier LICENSE pour plus de détails.
Les contributions sont les bienvenues ! N'hésitez pas à ouvrir une issue ou une pull request.
Créé avec ❤️ par Jaybee-v