Skip to content

Repository files navigation

Application de Gestion des Absences

Application complète de gestion des absences avec authentification JWT, gestion des rôles (Admin RH, Manager, Employé) et interface moderne.

🚀 Technologies

Backend

  • Node.js + Express
  • MySQL (base de données)
  • JWT (authentification)
  • bcryptjs (hashage des mots de passe)
  • Architecture MVC (Models, Views, Controllers)

Frontend

  • React + TypeScript
  • Material-UI (interface utilisateur)
  • React Router (navigation)
  • Axios (requêtes HTTP)
  • Vite (bundler)

DevOps

  • Docker + Docker Compose
  • Nginx (serveur web pour le frontend)

📁 Structure du Projet

gestion-absences/
├── backend/
│   ├── src/
│   │   ├── config/           # Configuration DB et initialisation
│   │   ├── controllers/      # Contrôleurs (logique des routes)
│   │   ├── middlewares/      # Middlewares (auth, validation)
│   │   ├── models/          # Modèles de données
│   │   ├── routes/          # Définition des routes API
│   │   ├── services/        # Logique métier
│   │   └── server.js        # Point d'entrée du serveur
│   ├── init.sql             # Script d'initialisation MySQL
│   ├── package.json
│   └── Dockerfile
├── frontend/
│   ├── src/
│   │   ├── components/      # Composants React réutilisables
│   │   ├── context/         # Context API (AuthContext)
│   │   ├── pages/           # Pages de l'application
│   │   ├── services/        # Services API
│   │   ├── types/           # Types TypeScript
│   │   ├── App.tsx          # Application principale
│   │   └── main.tsx         # Point d'entrée React
│   ├── package.json
│   ├── Dockerfile
│   └── nginx.conf
└── docker-compose.yml

🔧 Installation et Démarrage

Option 1 : Avec Docker (Recommandé) 🐳

  1. Cloner le projet
cd /home/john/project
  1. Créer le fichier .env (optionnel)
cp .env.docker .env
# Modifier les valeurs si nécessaire
  1. Lancer tous les services
docker-compose up -d
  1. Vérifier que tout fonctionne
docker-compose ps
docker-compose logs -f
  1. Accéder à l'application
  1. Arrêter les services
docker-compose down
  1. Arrêter et supprimer les volumes (⚠️ Supprime les données)
docker-compose down -v

Option 2 : Installation Locale (Développement)

Backend

  1. Installer les dépendances
cd backend
npm install
  1. Configurer les variables d'environnement
cp .env.example .env
# Modifier les valeurs dans .env
  1. Démarrer MySQL (doit être installé localement)
# Assurez-vous que MySQL est en cours d'exécution
sudo service mysql start
  1. Initialiser la base de données
npm run init-db
  1. Démarrer le serveur
# Mode développement
npm run dev

# Mode production
npm start

Le backend sera accessible sur http://localhost:5000

Frontend

  1. Installer les dépendances
cd frontend
npm install
  1. Configurer l'API
# Le fichier .env contient déjà l'URL de l'API
cat .env
# VITE_API_URL=http://localhost:5000/api
  1. Démarrer l'application
npm run dev

Le frontend sera accessible sur http://localhost:3000

  1. Build de production
npm run build
npm run preview

👥 Comptes de Test

Utilisateur Mot de passe Rôle
admin admin123 Admin RH
manager_it manager123 Manager IT
manager_mkt manager123 Manager Marketing
employee1 employee123 Employé
employee2 employee123 Employé
employee3 employee123 Employé

📊 API Endpoints

Authentification

  • POST /api/auth/login - Connexion
  • GET /api/auth/profile - Profil utilisateur
  • POST /api/auth/change-password - Changer le mot de passe

Employés

  • GET /api/employees - Liste des employés
  • GET /api/employees/:id - Détails d'un employé
  • POST /api/employees - Créer un employé (Admin)
  • PUT /api/employees/:id - Modifier un employé (Admin)
  • DELETE /api/employees/:id - Supprimer un employé (Admin)
  • GET /api/employees/search?q=term - Rechercher des employés

Absences

  • GET /api/absences - Liste des absences
  • GET /api/absences/:id - Détails d'une absence
  • POST /api/absences - Créer une absence (Admin/Manager)
  • PUT /api/absences/:id - Modifier une absence (Admin/Manager)
  • DELETE /api/absences/:id - Supprimer une absence (Admin)
  • GET /api/absences/stats/:employeeId - Statistiques d'un employé

Demandes d'Absence

  • GET /api/requests - Liste des demandes
  • GET /api/requests/:id - Détails d'une demande
  • POST /api/requests - Créer une demande
  • GET /api/requests/pending/me - Demandes en attente (Manager)
  • PUT /api/requests/:id/approve - Approuver une demande (Manager)
  • PUT /api/requests/:id/reject - Refuser une demande (Manager)
  • DELETE /api/requests/:id - Supprimer une demande

Présences

  • GET /api/attendance - Liste des présences
  • GET /api/attendance/:employeeId/:date - Présence spécifique
  • POST /api/attendance - Enregistrer une présence (Admin/Manager)
  • PUT /api/attendance/:id - Modifier une présence (Admin/Manager)
  • DELETE /api/attendance/:id - Supprimer une présence (Admin)

Rapports

  • GET /api/reports/absences - Rapport des absences (Admin/Manager)
  • GET /api/reports/attendance - Rapport des présences (Admin/Manager)
  • GET /api/reports/employee/:id - Rapport par employé (Admin/Manager)
  • GET /api/reports/service/:service - Rapport par service (Admin/Manager)
  • GET /api/reports/monthly?year=2024&month=11 - Rapport mensuel (Admin/Manager)

🔐 Sécurité

  • ✅ Mots de passe hashés avec bcryptjs
  • ✅ Authentification par JWT
  • ✅ Protection des routes par rôles
  • ✅ Validation des données
  • ✅ Protection CORS
  • ✅ Headers de sécurité

📱 Fonctionnalités

Admin RH

  • ✅ CRUD complet sur tous les modules
  • ✅ Gestion des employés
  • ✅ Validation des demandes
  • ✅ Génération de rapports
  • ✅ Statistiques globales

Manager

  • ✅ Validation des demandes de son équipe
  • ✅ Vue sur les absences de son équipe
  • ✅ Rapports de son service
  • ✅ Gestion des présences

Employé

  • ✅ Création de demandes d'absence
  • ✅ Consultation de ses absences
  • ✅ Historique de ses demandes
  • ✅ Profil personnel

🛠️ Commandes Utiles

Docker

# Voir les logs
docker-compose logs -f backend
docker-compose logs -f frontend
docker-compose logs -f database

# Redémarrer un service
docker-compose restart backend

# Rebuild complet
docker-compose up -d --build

# Entrer dans un conteneur
docker exec -it gestion-absences-backend sh
docker exec -it gestion-absences-db mysql -u root -p

Base de données

# Backup de la base
docker exec gestion-absences-db mysqldump -u root -p gestion_absences > backup.sql

# Restore de la base
docker exec -i gestion-absences-db mysql -u root -p gestion_absences < backup.sql

📝 Notes

  • Le frontend utilise Material-UI pour une interface moderne
  • L'API est documentée avec des messages d'erreur clairs
  • Les dates sont au format ISO (YYYY-MM-DD)
  • Les tokens JWT expirent après 7 jours par défaut

🐛 Dépannage

Le backend ne démarre pas

  • Vérifiez que MySQL est bien démarré
  • Vérifiez les variables d'environnement
  • Vérifiez les logs : docker-compose logs backend

Le frontend ne se connecte pas au backend

  • Vérifiez que le backend est accessible sur le port 5000
  • Vérifiez la variable VITE_API_URL dans .env
  • Vérifiez les CORS dans le backend

Erreur de connexion MySQL

  • Attendez que MySQL soit complètement initialisé
  • Vérifiez les credentials dans .env
  • Réinitialisez les volumes : docker-compose down -v

📄 Licence

MIT

👨‍💻 Développement

Pour contribuer au projet :

  1. Fork le projet
  2. Créez une branche (git checkout -b feature/amazing-feature)
  3. Commit vos changements (git commit -m 'Add amazing feature')
  4. Push vers la branche (git push origin feature/amazing-feature)
  5. Ouvrez une Pull Request

✨ Projet créé avec passion pour simplifier la gestion des absences ! ✨

About

Full-stack Absence Management System (React, Node.js, MySQL, Docker)

Resources

Stars

1 star

Watchers

0 watching

Forks

Releases

Packages

Contributors

Languages