Un projet fullstack complet réunissant backend, frontend, infrastructure Docker et gestion avancée de l’authentification, conçu pour le cursus 42.
.
├── back/ # Backend (Node.js/NestJS ou similaire)
├── front/ # Frontend (React/Next.js ou similaire)
├── cli/ # Outils CLI (C, Makefile)
├── nginx/ # Configuration Nginx Docker
├── docker-compose.dev.yml
├── docker-compose.prod.yml
├── api_back.md # Documentation API interne
├── Makefile # Automatisation des tâches
├── script.sh # Script d'initialisation
├── .gitignore
├── .gitmodules
└── package-lock.json
-
Docker & Docker Compose
-
Node.js, npm (pour le dev local frontend/backend)
-
Make (pour l'automatisation)
-
.env à ajouter :
Avant de lancer le projet, créez un fichier.envdans le dossierback/contenant vos variables d'environnement. Exemple minimal :DB_HOST=localhost DB_PORT=5432 DB_USER=your_user DB_PASS=your_password JWT_SECRET=your_secret CLOUDINARY_URL=your_cloudinary_urlAdaptez-le selon vos besoins et ne versionnez jamais ce fichier !
-
Exécution du script d'initialisation :
Avant le lancement des containers, exécutez obligatoirement :./script.sh
Ce script détecte et configure l'IP locale pour Docker (utile pour le réseau et certains accès).
make dev- Installe les dépendances du frontend
- Lance le script d'init (si ce n'est pas déjà fait)
- Démarre tous les services (front + back) via Docker Compose (
docker-compose.dev.yml)
make prod- Installe les dépendances du frontend
- Lance le script d'init
- Démarre les services via Docker Compose (
docker-compose.prod.yml, incluant Nginx)
⚠️ Attention : La commandemake prodest en travaux et peut ne pas fonctionner correctement pour le moment. Un patch arrive bientôt !
make clean # Supprime node_modules front/back
make down # Arrête les containers
make fclean # Supprime les images Docker
make re # Nettoyage complet + relance- API REST sécurisée (JWT, 2FA)
- Principales routes :
/auth/register,/auth/login,/auth/logout(gestion utilisateurs)/auth/2fa/setup,/auth/2fa/verify,/auth/2fa/disable(authentification forte)/users/:id(CRUD utilisateur)
- Documentation détaillée dans
api_back.md - Fichier
.envpour variables d’environnement (voir exemple ci-dessus)
- Application web moderne (React, Next.js ou équivalent)
- Connectée en temps réel au backend via API REST
- Dossier monté dans Docker pour hot-reload
- Outil en C pour interface en ligne de commande (Makefile dédié)
- Avant toute compilation, exécuter le script d'installation des dépendances :
Ce script installe automatiquement les librairies nécessaires : cJSON et curl.
./command.sh
- Compilation :
makedans le dossiercli - Dépendances :
curl,cJSON,X11 - Nettoyage :
make clean,make cleandeps
- docker-compose.dev.yml : Lance
frontendetbackendsur le réseautranscendance. Ports exposés : 3000 (front), 8000 (back). - docker-compose.prod.yml : Lance
backendetnginx(reverse proxy SSL). Ports exposés : 443 (front via Nginx), 80 (HTTP). - Volumes : Montage des dossiers pour persistance et dev live.
- Certificats : Stockés dans
./certs, utilisés par Nginx.
- JWT obligatoire pour toutes les routes sécurisées
- 2FA (TOTP) configurable par utilisateur
- Headers à fournir :
Authorization: Bearer <token>x-2fa-token: <code>(si 2FA activée)
- Gestion avancée des erreurs (voir documentation API)
Consultez api_back.md pour :
- Table des routes
- Payloads d’exemple
- Gestion des erreurs (
errorCodes.js) - Notes sur sécurité et fonctionnement des tokens
- Tous les services tournent sur le réseau Docker
transcendance. - La suppression des tokens JWT se fait toutes les heures, pas de refresh_token.
- Les avatars utilisateurs sont gérés et uploadés sur CDN (Cloudinary).
- Hot-reload disponible en dev (volumes Docker).
Makefile: Automatisation globale (build, nettoyage, lancement)script.sh: Script d’initialisation.gitignore: Liste des fichiers ignorés par git.gitmodules: Dépendances git externes (si présentes)
Projet développé par TFHD, SatoSaki, Scorpionnem and Arkturius.