API REST pour gérer les User Stories et l'authentification des utilisateurs.
- Node.js 20.19+ ou 22.12+
- PostgreSQL (ou compte Neon gratuit)
- npm ou yarn
- Cloner le repository
- Installer les dépendances :
npm install- Créer un fichier
.envà la racine :
DATABASE_URL="postgresql://user:password@host/database?sslmode=require"
JWT_SECRET="votre-cle-secrete-minimum-32-caracteres"
PORT=3000
FRONTEND_URL="http://localhost:5173"
NODE_ENV="development"Important : Pour un déploiement serverless (Vercel), utiliser une URL de connexion avec -pooler dans le nom d'hôte Neon.
- Initialiser la base de données :
npx prisma generate
npx prisma migrate dev --name initnpm run devL'API sera accessible sur http://localhost:3000
npm startLa documentation OpenAPI est disponible au format JSON :
http://localhost:3000/api/docs.json
Importer ce fichier dans Postman, Insomnia ou tout client REST pour tester les endpoints.
Inscription
POST /api/auth/register
Content-Type: application/json
{
"name": "Jean Dupont",
"email": "jean@example.com",
"password": "motdepasse123",
"role": "developer"
}
Rôles disponibles : productOwner, scrumMaster, developer, tester, designer, stakeholder, teammate
Connexion
POST /api/auth/login
Content-Type: application/json
{
"email": "jean@example.com",
"password": "motdepasse123"
}
Retourne un token JWT à utiliser pour les requêtes protégées.
Lister vos User Stories
GET /api/userstories
Authorization: Bearer VOTRE_TOKEN_JWT
Créer une User Story
POST /api/userstories
Authorization: Bearer VOTRE_TOKEN_JWT
Content-Type: application/json
{
"title": "En tant que utilisateur, je veux me connecter",
"description": "Afin d'accéder à mon compte",
"priority": "High",
"status": "Todo"
}
Priorités : Low, Medium, High
Statuts : Todo, Doing, Done
Modifier une User Story
PUT /api/userstories/:id
Authorization: Bearer VOTRE_TOKEN_JWT
Content-Type: application/json
{
"title": "Titre modifié",
"description": "Description modifiée",
"priority": "Medium",
"status": "Doing"
}
Supprimer une User Story
DELETE /api/userstories/:id
Authorization: Bearer VOTRE_TOKEN_JWT
Changer le mot de passe
PUT /api/password/change
Authorization: Bearer VOTRE_TOKEN_JWT
Content-Type: application/json
{
"oldPassword": "ancien",
"newPassword": "nouveau"
}
npx prisma studioOuvre une interface web pour consulter et modifier les données.
Après modification du fichier prisma/schema.prisma :
npx prisma migrate dev --name nom_de_la_migration- Les mots de passe sont hashés avec bcrypt
- Les tokens JWT expirent après 24h
- Toutes les entrées sont validées avec Zod
- Protection contre les injections SQL via Prisma ORM
- CORS configuré pour autoriser uniquement le frontend
L'API peut être déployée sur Vercel, Railway, Render ou tout hébergeur Node.js.
Variables d'environnement à configurer :
DATABASE_URL: URL PostgreSQL (avec-poolerpour serverless)JWT_SECRET: Clé secrète pour les tokensFRONTEND_URL: URL du frontend pour CORSNODE_ENV:production
- Express 5
- Prisma ORM
- PostgreSQL
- JWT pour l'authentification
- Zod pour la validation
- Pino pour les logs
Projet fil rouge TP DWWM 2024/2025