React Form Project - Full Stack Application
đ„ Ăquipe de DĂ©veloppement
Groupe de 2 étudiants :
- Varlopecar - GitHub: @varlopecar
- [Nom du deuxiÚme étudiant] - [GitHub: @username]
đ RĂ©partition des TĂąches
TĂąche | Responsable | Statut |
---|---|---|
Architecture Docker (MongoDB/Node.js) | Varlopecar | â TerminĂ© |
Architecture Docker (MySQL/Python/React/Adminer) | Varlopecar | â TerminĂ© |
Frontend React avec formulaire et base de donnĂ©es | Varlopecar | â TerminĂ© |
API Node.js avec MongoDB pour les posts | Varlopecar | â TerminĂ© |
Gestion des utilisateurs avec rĂŽles admin | Varlopecar | â TerminĂ© |
Menu latĂ©ral et navigation | Varlopecar | â TerminĂ© |
Tests unitaires, intĂ©gration et E2E | Varlopecar | â TerminĂ© |
Configuration Terraform (Docker) | Varlopecar | â TerminĂ© |
Configuration Terraform (Scalingo) | Varlopecar | â TerminĂ© |
Pipelines GitHub Actions | Varlopecar | â TerminĂ© |
Documentation complĂšte | Varlopecar | â TerminĂ© |
đïž Architecture
Ce projet implémente une architecture dual API :
- Python FastAPI + MySQL : Gestion des utilisateurs et authentification
- Node.js + MongoDB : Posts de blog et gestion de contenu
- React Frontend : Interface utilisateur avec Material-UI et menu latéral
⚠Fonctionnalités
Gestion des Utilisateurs (Python FastAPI + MySQL)
- Inscription Utilisateur : Validation complÚte avec schémas Zod
- Authentification : Connexion/déconnexion avec tokens JWT
- Gestion des Utilisateurs :
- Affichage de la liste des utilisateurs avec informations réduites
- Les admins peuvent voir les informations privées des utilisateurs
- Les admins peuvent supprimer les utilisateurs non-admin
- ContrÎle d'accÚs basé sur les rÎles
SystĂšme de Blog (Node.js + MongoDB)
- Posts de Blog : Affichage des posts sur la page d'accueil
- Gestion de Contenu : Création, lecture, modification et suppression de posts
- Mise à jour en temps réel : Chargement dynamique du contenu
Frontend
- Menu Latéral : Navigation complÚte avec sidebar responsive
- Validation de Formulaire : Validation complÚte avec schémas Zod
- Expérience Utilisateur :
- Bouton de soumission désactivé jusqu'à ce que tous les champs soient remplis
- Messages d'erreur affichés sous chaque champ invalide
- Notifications toast pour succÚs et échec
- Design responsive avec Material-UI
- Navigation : Menu latéral avec éléments basés sur les rÎles
- RĂšgles de Validation :
- Vérification de l'ùge (18+ ans)
- Format de code postal français
- Validation des noms (permettant accents, tirets, espaces)
- Validation d'email
- Tests : Couverture de tests complÚte avec tests unitaires et d'intégration
- Documentation : Documentation auto-générée avec JSDoc
- Pipeline CI/CD : Processus automatisé de build, test et déploiement
đ DĂ©mo en Ligne
Visitez la démo en ligne : https://varlopecar.github.io/react-form/
đ§ Variables d'Environnement
Créez un fichier .env
dans le répertoire racine :
# API de Gestion des Utilisateurs (Python FastAPI)
VITE_API_URL=http://localhost:8000
# API de Blog (Node.js)
VITE_BLOG_API_URL=http://localhost:3001
# Environnement
NODE_ENV=development
đŠ Installation
# Cloner le repository
git clone https://github.com/varlopecar/react-form.git
# Installer les dépendances
pnpm install
# Démarrer le serveur de développement
pnpm dev
# Lancer les tests
pnpm test
# Générer le rapport de couverture
pnpm coverage
# Générer la documentation
pnpm doc
# Build pour la production
pnpm build
đł Configuration Docker
API de Gestion des Utilisateurs (Python FastAPI + MySQL)
# Démarrer les services de gestion des utilisateurs
cd backend
docker-compose up -d
# Cela démarrera :
# - Base de données MySQL
# - Backend FastAPI
# - Adminer (gestion de base de données)
API de Blog (Node.js + MongoDB)
# Démarrer l'API de blog (repository séparé)
cd ../express-mongodb-app
docker-compose up -d
# Cela démarrera :
# - Base de données MongoDB
# - Serveur API Node.js
Architecture Docker ComplĂšte
# Démarrer toute l'architecture avec Terraform
cd ../terraform-architecture
terraform init
terraform plan -var="environment=docker"
terraform apply -var="environment=docker"
đ DĂ©ploiement Scalingo
# Déployer sur Scalingo avec Terraform
cd ../terraform-architecture
terraform init
terraform plan -var="environment=scalingo" -var="scalingo_token=VOTRE_TOKEN"
terraform apply -var="environment=scalingo" -var="scalingo_token=VOTRE_TOKEN"
đĄ Endpoints API
API de Gestion des Utilisateurs (Python FastAPI)
POST /register
- Inscription utilisateurPOST /login
- Authentification utilisateurGET /users
- Obtenir tous les utilisateurs (admin seulement)DELETE /users/{id}
- Supprimer un utilisateur (admin seulement)GET /me
- Obtenir les informations de l'utilisateur actuel
API de Blog (Node.js)
GET /posts
- Obtenir tous les posts de blogPOST /posts
- Créer un nouveau post de blogPUT /posts/{id}
- Modifier un post de blogDELETE /posts/{id}
- Supprimer un post de blog
đ€ RĂŽles Utilisateurs
Utilisateurs Réguliers
- Peuvent s'inscrire et se connecter
- Peuvent voir la page d'accueil avec les posts de blog
- Peuvent voir la liste des utilisateurs avec informations réduites (nom, email, statut admin seulement)
Utilisateurs Admin
- Toutes les permissions des utilisateurs réguliers
- Peuvent voir les informations complÚtes des utilisateurs (y compris les données privées)
- Peuvent supprimer les utilisateurs non-admin
- Peuvent gérer les posts de blog (créer, modifier, supprimer)
đ§Ș Tests
Tests Unitaires
# Lancer les tests unitaires
pnpm test:unit
# Lancer les tests avec interface graphique
pnpm test:ui
# Générer la couverture de code
pnpm coverage
Tests d'Intégration
# Lancer les tests d'intégration
pnpm test:integration
Tests End-to-End
# Lancer les tests E2E avec Cypress
pnpm e2e
# Ouvrir Cypress en mode interactif
pnpm cypress:open
đ Pipeline CI/CD
Ce projet utilise GitHub Actions pour l'intégration et le déploiement continus :
-
Build et Test : S'exécute sur chaque push et pull request
- Installe les dépendances
- Lance les tests avec couverture
- GénÚre la documentation
- Build le projet
-
Déploiement GitHub Pages : Déploie le site de démo
- Build le projet
- Déploie sur GitHub Pages
-
Intégration Docker :
- Build et teste les conteneurs Docker
- Lance les tests d'intégration
-
Déploiement Terraform :
- Configure l'environnement Docker
- Déploie sur Scalingo
-
Tests de Sécurité :
- Scan de vulnérabilités avec Trivy
- Tests de performance avec Lighthouse
đ Structure du Projet
react-form/
âââ src/
â âââ components/ # Composants React
â â âââ Sidebar.tsx # Menu latĂ©ral
â â âââ Navigation.tsx # Navigation principale
â âââ pages/ # Composants de pages
â â âââ HomePage.tsx # Page d'accueil avec blog
â â âââ PostsPage.tsx # Gestion des posts
â â âââ UsersPage.tsx # Gestion des utilisateurs
â â âââ DashboardPage.tsx
â âââ services/ # Services API
â âââ schemas/ # SchĂ©mas de validation
â âââ tests/ # Fichiers de test
âââ backend/ # Backend Python FastAPI
â âââ main.py # Application FastAPI
â âââ models.py # ModĂšles de base de donnĂ©es
â âââ schemas.py # SchĂ©mas Pydantic
â âââ docker-compose.yml # Configuration Docker
âââ cypress/ # Tests E2E
âââ scripts/ # Scripts de build et dĂ©ploiement
âââ docs/ # Documentation
đ Documentation
La documentation est disponible directement depuis l'application en cliquant sur le lien "Documentation", ou vous pouvez y accéder à : https://varlopecar.github.io/react-form/docs/
đ SĂ©curitĂ©
- Authentification JWT sécurisée
- Validation des données cÎté client et serveur
- ContrÎle d'accÚs basé sur les rÎles
- Scan de vulnérabilités automatisé
- Variables d'environnement sécurisées
đ MĂ©triques
- Couverture de Tests : >90%
- Temps de Build : <5 minutes
- Temps de Déploiement : <10 minutes
- Performance Lighthouse : >90/100
đ€ Contribution
- Fork le repository
- Créer une branche de fonctionnalité
- Faire vos modifications
- Ajouter des tests pour les nouvelles fonctionnalités
- S'assurer que tous les tests passent
- Soumettre une pull request
đ Support
Pour des questions ou des problĂšmes :
- GitHub Issues : https://github.com/varlopecar/react-form/issues
- Email : [votre-email@example.com]
đ Licence
Ce projet est sous licence MIT - voir le fichier LICENSE pour plus de détails.
đ Remerciements
- Material-UI pour les composants d'interface
- FastAPI pour le backend Python
- Express.js pour l'API Node.js
- Cypress pour les tests E2E
- Terraform pour l'infrastructure as code
- GitHub Actions pour l'automatisation CI/CD
DĂ©veloppĂ© avec â€ïž par l'Ă©quipe de dĂ©veloppement