Application backend pour la plateforme sociale de fitness ILift, permettant aux utilisateurs de suivre leurs entraînements et partager leurs progrès.
- Node.js avec TypeScript
- Express.js pour l'API REST
- Prisma comme ORM
- PostgreSQL comme base de données
- JWT pour l'authentification
- Multer pour la gestion des uploads
- Zod pour la validation des données
backend/
├── src/
│ ├── config/ # Configuration (env, sécurité)
│ ├── controllers/ # Contrôleurs de routes
│ ├── database/ # Configuration Prisma
│ ├── errors/ # Gestion des erreurs
│ ├── middlewares/ # Middlewares (auth, upload)
│ ├── routes/ # Définition des routes
│ ├── services/ # Logique métier
│ ├── types/ # Types TypeScript
│ ├── utils/ # Utilitaires
│ ├── validators/ # Schémas de validation
│ ├── server.ts # Configuration du serveur
│ └── index.ts # Point d'entrée
├── prisma/
│ ├── schema.prisma # Schéma de base de données
│ └── seed.ts # Données de test
└── uploads/ # Dossier des fichiers uploadés
└── bruno/ # Collection de tests API et documentation des endpoints
- Node.js 18+
- PNPM (gestionnaire de paquets recommandé)
npm install -g pnpm
- PostgreSQL
- Authentification JWT avec refresh tokens
- Gestion des utilisateurs et profils
- Gestion des programmes d'entraînement
- Publication de posts avec images
- Système de likes et commentaires
- Système de suivi entre utilisateurs
- Gestion des exercices et résultats
- Système de notifications
- Cloner le projet
git clone https://github.com/Gutsey68/CDA-Ilift-backend.git
cd backend
- Installer les dépendances avec PNPM
pnpm install
- Configurer l'environnement
cp .env.example .env
# Modifier les variables dans .env selon votre configuration
- Initialiser la base de données
npx prisma generate
npx prisma migrate dev
npm run seed
npm run dev
: Lance le serveur en mode développementnpm run build
: Compile le projet TypeScriptnpm run serve
: Lance le serveur compilénpm run seed
: Remplit la base de données avec des données de testnpm start
: Lance le serveur en productionnpm run start:prod
: Lance le serveur en production avec NODE_ENV=production
L'application implémente plusieurs mesures de sécurité :
- Protection CORS
- Rate limiting
- Validation des données
- Protection XSS via Helmet
- Compression des réponses
- Gestion sécurisée des fichiers
Le fichier seyzeriat_gauthier_mcd_mld_api.pdf contient :
- Le Modèle Conceptuel de Données (MCD)
- Le Modèle Logique de Données (MLD)
- La documentation complète des routes API
PORT=5000
NODE_ENV=development
DATABASE_URL=postgresql://user:password@localhost:5432/dbname
JWT_SECRET=your_jwt_secret
JWT_EXPIRES_IN=15m
REFRESH_TOKEN_SECRET=your_refresh_token_secret
REFRESH_TOKEN_EXPIRES_IN=7d
RESEND_API_KEY=your_resend_api_key
CLIENT_URL=http://localhost:5173
UPLOAD_DIR=uploads
MAX_FILE_SIZE=5242880
Le projet inclut une collection Bruno pour tester les routes API.
Les fichiers de test se trouvent dans le dossier /bruno
et sont organisés par fonctionnalité :
- auth/
- users/
- programs/
- workouts/
- etc.
Pour utiliser Bruno :
- Installer Bruno (https://www.usebruno.com/)
- Ouvrir le dossier
/bruno
dans Bruno - Configurer les variables d'environnement dans Bruno
- Exécuter les requêtes
Un guide détaillé de déploiement est disponible dans le fichier guide-deploiement.md. Il couvre :
- La préparation du serveur
- L'installation des dépendances nécessaires
- La configuration Docker et Docker Compose
- Le déploiement avec Nginx
- La maintenance et les sauvegardes
- Créer une branche pour votre fonctionnalité
- Commiter vos changements
- Pousser vers la branche
- Créer une Pull Request