HRnet est une application web interne pour la gestion des employés. Ce projet représente la conversion d'une application jQuery vers une application moderne basée sur React, avec pour objectif d'améliorer les performances, la maintenabilité et l'expérience utilisateur.
| Plugins jQuery | Remplacé par |
|---|---|
| jQuery Modal | @rogue06/react-modal (custom component) |
| jQuery DataTables | @tanstack/react-table |
| jQuery DatePicker | React DatePicker |
| jQuery Select | React Select |
L'un des objectifs majeurs était de convertir le plugin jQuery Modal en un composant React réutilisable. Pour cela, j'ai :
- Développé un composant Modal en React
- Publié ce composant sur GitHub Package sous le nom
@rogue06/react-modal - Ajouté des fonctionnalités d'animation et d'accessibilité
- Optimisation des performances : Réduction significative des temps de chargement et d'interaction
- Interface utilisateur moderne : Design responsive et esthétique
- Amélioration de l'accessibilité : Support du clavier, attributs ARIA
- Fonctionnalités avancées :
- Tri des données sur toutes les colonnes
- Filtrage global des données
- Pagination améliorée
# Cloner le projet
git clone https://github.com/Rogue06/hrnet.git
cd hrnet
# Installer les dépendances
npm install
# Lancer l'application en mode développement
npm run devHRnet/
├── public/ # Ressources statiques
│ └── README.md
├── src/
│ ├── components/ # Composants réutilisables
│ ├── context/ # Contextes React (EmployeeContext, etc.)
│ ├── data/ # Données statiques (états, départements, etc.)
│ ├── pages/ # Composants de page
│ │ ├── Home/ # Page de création d'employé
│ │ └── EmployeeList/ # Page de liste des employés
│ ├── styles/ # Styles globaux
│ ├── utils/ # Fonctions utilitaires
│ ├── App.jsx # Composant principal
│ ├── main.jsx # Point d'entrée
├── package.json
├── vite.config.js
└── README.md
Des tests de performance ont été menés pour comparer l'application jQuery originale avec la nouvelle version React :
Des tests de performance ont été réalisés afin de comparer l’application initiale développée en jQuery avec sa nouvelle version en React. Voici le résumé des résultats observés :
| Métrique | jQuery Original | Version React | Différence (temps) |
|---|---|---|---|
| First Contentful Paint | ~0.6s | ~1.8s | +1.2s (moins rapide) |
| Largest Contentful Paint | ~0.6s | ~1.8s | +1.2s (moins rapide) |
| Total Blocking Time | Non disponible | 0–90ms | Optimisation significative |
| Cumulative Layout Shift | 0.25 | 0–0.004 | -0.246 (meilleure stabilité) |
| Speed Index | ~0.6s | 1.8s | +1.2s (moins rapide) |
| Score Performance | 100 | 98 | -2 points (score globale similaire) |
💡 Note : Bien que les temps de chargement initiaux soient légèrement plus élevés avec React, cette version offre une architecture plus moderne, maintenable, et une expérience utilisateur plus fluide et cohérente à long terme (meilleure stabilité, modularité, performance interactive, etc.).
- React 18
- Vite
- React Router
- React Context API
- TanStack React Table (anciennement React Table)
- React Select
- React DatePicker
- Webpack (pour le packaging du composant Modal)
Ce projet est sous licence MIT. Voir le fichier LICENSE pour plus d'informations.

