MoveUp est une API REST complète développée avec Node.js et Express qui permet de gérer une plateforme de coaching sportif avec :
🔐 Authentification sécurisée (classique + Google OAuth)
👤 Gestion des profils utilisateurs
💪 Catalogue d'exercices (55 exercices disponibles)
👨🏫 10 coachs professionnels
⭐ Système de favoris
📅 Planning personnalisé
🏆 Badges et achievements (12 badges)
💬 Avis et évaluations
✅ Inscription/Connexion classique
✅ OAuth Google
✅ JWT (stocké en cookie HTTP-only)
✅ Réinitialisation de mot de passe par email
✅ Hashage sécurisé (bcrypt)
✅ Profils personnalisés
✅ Upload de photo de profil
✅ Types : Personnel/Professionnel
✅ Niveaux d'expérience
✅ Régimes alimentaires
✅ Statistiques d'entraînement
✅ 55 exercices variés
✅ GIFs animés
✅ Instructions détaillées
✅ Muscles ciblés
✅ Durée et difficulté
✅ Catégories (musculation, cardio, gainage, étirement)
✅ 12 badges déblocables
✅ Badges de progression
✅ Badges de régularité
✅ Badges horaires
✅ Badges de diversité
✅ Suivi des statistiques
# 1. Cloner le repository
git clone https://github.com/minisquall59/api-auth.git
cd api-auth
# 2. Installer les dépendances
npm install
# 3. Configurer les variables d'environnement
cp .exemple.env .env
# Éditer .env avec vos propres valeurs
# 4. Lancer le serveur en mode développement
npm run dev
Le serveur démarre sur http://localhost:4000 🚀
Créez un fichier .env à la racine avec les variables suivantes :
JWT_SECRET = votre_super_secret_key_unique_et_difficile_a_deviner
CLIENT_ID = votre_client_id_google
EMAIL_USER = votre_email
EMAIL_PASS = votre_mot_de_passe_application
{
origin : "http://localhost:3000" ,
methods : [ "GET" , "POST" , "PUT" , "PATCH" , "DELETE" ] ,
credentials : true
}
api-auth/
├── 📂 controllers/ # Logique métier
│ ├── authController.js
│ ├── badgeController.js
│ ├── dataController.js
│ ├── favoriteController.js
│ ├── planningController.js
│ ├── reviewsController.js
│ └── userController.js
│
├── 📂 models/ # Accès aux données
│ ├── badgeModel.js
│ ├── coachsModel.js
│ ├── exercisesModel.js
│ ├── reviewModel.js
│ └── userModel.js
│
├── 📂 routes/ # Définition des routes
│ ├── authRoutes.js
│ ├── badgesRoutes.js
│ ├── dataRoutes.js
│ ├── favoritesRoutes.js
│ ├── planningRoutes.js
│ ├── reviewsRoutes.js
│ └── userRoutes.js
│
├── 📂 middlewares/ # Middlewares (multer)
│ └── multerMiddleware.js
│
├── 📂 data/ # Base de données JSON
│ ├── users.json
│ ├── exercices.json
│ ├── coach.json
│ ├── badges.json
│ └── reviews.json
│
├── 📂 public/ # Fichiers statiques
│ └── images/
│
└── 📄 index.js # Point d'entrée
🔐 Authentification /api/auth
Méthode
Endpoint
Description
POST
/login
Connexion utilisateur
POST
/register
Inscription
POST
/google-login
Connexion via Google OAuth
POST
/forgot-password
Demande de réinitialisation
POST
/reset-password
Réinitialisation du mot de passe
GET
/getme
Récupérer l'utilisateur connecté
POST
/logout
Déconnexion
👤 Utilisateurs /api/users
Méthode
Endpoint
Description
GET
/
Liste des utilisateurs
GET
/:id
Détails d'un utilisateur
PATCH
/:id
Modifier un utilisateur (+ upload photo)
DELETE
/:id
Supprimer un utilisateur
Méthode
Endpoint
Description
GET
/exercices
Liste des exercices
GET
/exercices/:id
Détails d'un exercice
GET
/coach
Liste des coachs
Méthode
Endpoint
Description
GET
/users/:id/favorites
Liste des favoris d'un utilisateur
PATCH
/:userId/favorites
Ajouter/retirer un favori
Méthode
Endpoint
Description
GET
/users/:id/planning
Planning d'un utilisateur
PUT
/users/:id/planning
Sauvegarder le planning
Méthode
Endpoint
Description
GET
/badges
Liste de tous les badges
GET
/users/:userId/badges
Badges débloqués par un utilisateur
POST
/achievements/track
Enregistrer une progression
Méthode
Endpoint
Description
GET
/
Liste des avis
POST
/
Créer un avis
📈 Badges de Progression (PROGRESSION)
🥉 Premier Pas - 1 exercice complété
🥈 Assidu - 50 exercices complétés
🥇 Héros - 100 exercices complétés
⏱️ Badges de Régularité (LOGIC)
📅 Semaine Parfaite - 7 jours consécutifs
📆 Mois Parfait - 30 jours consécutifs
🕐 Badges Horaires (LOGIC)
🌅 Lève-tôt - 10 séances avant 7h
🌙 Noctambule - 10 séances après 22h
🎯 Badges de Diversité (LOGIC)
🎨 Touche à tout - 5 exercices différents
🗺️ Explorateur - 10 exercices différents
🎓 Spécialiste - 50 fois le même exercice
⏲️ Badges de Durée (LOGIC)
⏱️ 10 Minutes - 600 secondes cumulées
⏰ 2 Heures - 7200 secondes cumulées
Package
Version
Description
express
5.1.0
Framework web
bcrypt
6.0.0
Hashage des mots de passe
jsonwebtoken
9.0.2
Authentification JWT
google-auth-library
10.5.0
OAuth Google
nodemailer
7.0.10
Envoi d'emails
multer
2.0.2
Upload de fichiers
moment
2.30.1
Gestion des dates
cors
2.8.5
Gestion CORS
Chaque utilisateur peut avoir :
Informations personnelles (nom, email, adresse, téléphone)
Type d'utilisateur (Personnel/Professionnel)
Niveau d'expérience (Débutant/Intermédiaire/Expert)
Régime alimentaire (Sans restriction, Végétarien, Vegan, etc.)
Abonnement (Gratuit/Premium/Pro)
Photo de profil
Exercices favoris
Planning personnalisé
Badges débloqués
Statistiques d'entraînement
💪 Exercices (55 disponibles)
Chaque exercice contient :
GIF animé
Instructions détaillées
Muscles ciblés
Équipement requis
Durée
Difficulté (Facile/Intermédiaire/Difficile)
Type d'activité (Musculation/Cardio/Gainage/Étirement)
👨🏫 Coachs (10 disponibles)
Nom et prénom
Adresse et coordonnées
Photo de profil
Spécialités
Présentation
# Mode développement avec nodemon
npm run dev
# Tests (non configurés)
npm test
✅ Mots de passe hashés avec bcrypt (10 rounds)
✅ JWT stockés dans des cookies HTTP-only
✅ Validation des entrées utilisateur
✅ Protection CORS configurée
✅ Variables d'environnement sensibles dans .env
✅ Tokens d'expiration (1h pour JWT, 15min pour reset password)
Projet développé dans le cadre d'une formation en développement web.
ISC
💪 Fait avec passion pour le sport et le code
⭐ N'oubliez pas de star le projet si vous l'aimez ! ⭐