Application web React pour identifier et visualiser vos intérêts professionnels et motivations clés sous forme de graphique Treemap interactif.
- ✅ Gestion multi-professions : Créer et gérer jusqu'à 5 professions différentes
- ✅ Gestion des intérêts professionnels : Création, modification, suppression avec couleurs personnalisées (max 10)
- ✅ Gestion des motivations clés : Ajout, modification, suppression avec importance (1-30) et type (Avantage/Désavantage/NSP)
- ✅ Visualisation graphique : Treemap interactif où la taille dépend de l'importance
- ✅ Modes de visualisation : Basculer entre couleurs par catégorie ou par type de motivation
- ✅ Modification en temps réel : Slider pour ajuster l'importance avec mise à jour instantanée
- ✅ Interface responsive : Adaptée aux différentes tailles d'écran
- ✅ Accessibilité : Conforme aux standards WCAG AA
- ✅ Persistance locale : Données sauvegardées dans le navigateur (localStorage)
- ✅ Tests complets : Tests unitaires avec couverture maximale
- Node.js >= 20.x et npm
npm installnpm run devL'application sera accessible sur http://localhost:3000 et s'ouvrira automatiquement dans votre navigateur.
npm run buildLes fichiers compilés seront dans le dossier dist/.
npm run previewL'application est configurée pour être déployée automatiquement sur GitHub Pages.
-
Activer GitHub Pages dans votre repository :
- Allez dans
Settings>Pages - Source :
GitHub Actions
- Allez dans
-
Le déploiement se fait automatiquement :
- À chaque push sur
mainoumaster - Via le workflow GitHub Actions (
.github/workflows/deploy.yml)
- À chaque push sur
-
Votre application sera accessible à :
https://[votre-username].github.io/[nom-du-repo]/
Si vous préférez déployer manuellement :
# Build avec la base path pour GitHub Pages
GITHUB_PAGES=true GITHUB_REPOSITORY_NAME=votre-nom-de-repo npm run build
# Puis poussez le dossier dist/ sur la branche gh-pages
# ou utilisez gh-pages npm package- Le workflow exécute les tests avant de déployer
- Seuls les builds qui passent les tests sont déployés
- Les données sont stockées dans le localStorage du navigateur (pas de serveur requis)
bulle_chart/
├── src/
│ ├── components/ # Composants React
│ │ ├── ui/ # Composants UI réutilisables
│ │ ├── forms/ # Formulaires
│ │ ├── charts/ # Composants graphiques
│ │ └── *.test.jsx # Tests des composants
│ ├── hooks/ # Hooks personnalisés
│ │ └── *.test.js # Tests des hooks
│ ├── utils/ # Utilitaires et constantes
│ │ └── *.test.js # Tests des utilitaires
│ ├── services/ # Services (stockage local)
│ │ └── *.test.js # Tests des services
│ ├── types/ # Définitions de types (JSDoc)
│ ├── styles/ # Styles CSS
│ │ ├── variables.css # Variables CSS
│ │ └── app.css # Styles principaux
│ ├── test/ # Configuration des tests
│ │ ├── setup.js
│ │ └── templates/ # Templates de tests
│ ├── App.jsx # Composant principal
│ └── main.jsx # Point d'entrée
├── index.html
├── vite.config.js
├── package.json
├── TESTING.md # Guide de tests
├── CONTRIBUTING.md # Guide de contribution
└── README.md
L'application utilise Vitest et React Testing Library pour les tests.
# Lancer les tests
npm test
# Lancer les tests avec couverture
npm test:coverage
# Lancer les tests en mode CI (optimisé pour CI/CD)
npm test:ci
# Interface graphique pour les tests
npm test:ui
# Mode watch (développement)
npm test:watch
# Vérifier package-lock.json est synchronisé
npm run verify-lock
# Vérifier tout avant push (lock + tests)
npm run checkImportant : Toute nouvelle fonctionnalité ou modification doit inclure les tests correspondants. Voir TESTING.md pour les guidelines de tests.
Avant de pousser du code, il est recommandé d'exécuter :
npm run checkCe script vérifie :
- ✅ Que
package-lock.jsonest synchronisé avecpackage.json - ✅ Que tous les tests passent
Ces vérifications sont également exécutées automatiquement dans le workflow GitHub Actions.
- 285 tests passent avec succès
- Couverture globale : ~65%
- Services : ~97% de couverture
- Composants UI : ~100% de couverture
- React 18 : Bibliothèque UI
- Vite : Build tool et serveur de développement
- Vitest : Framework de tests
- React Testing Library : Tests de composants React
- Material-UI : Composants UI (Slider, Icons)
- Recharts : Graphiques (Treemap)
Les données sont stockées dans le localStorage du navigateur. Cela signifie que :
- Les données sont persistantes entre les sessions
- Les données sont spécifiques à chaque navigateur
- Les données sont stockées localement (pas de serveur requis)
Vous pouvez utiliser la console du navigateur :
// Exporter les données
JSON.stringify(localStorage.getItem('bulle_chart_categories'))
// Importer les données
localStorage.setItem('bulle_chart_categories', '[votre JSON]')- Vérifiez que Node.js >= 20 est installé :
node --version - Supprimez
node_modules/et relanceznpm install - Vérifiez que le port 3000 n'est pas déjà utilisé
- Vérifiez que les cookies/localStorage ne sont pas désactivés dans votre navigateur
- Vérifiez la console du navigateur pour les erreurs
- Consultez RESET_LOCALSTORAGE.md pour réinitialiser les données
- Vérifiez que toutes les dépendances sont installées :
npm install - Vérifiez que les imports sont corrects après un refactoring
- Consultez TESTING.md pour les guidelines de tests
- Vérifiez que GitHub Actions est activé dans les paramètres du repository
- Vérifiez que le workflow
.github/workflows/deploy.ymls'exécute correctement - Attendez quelques minutes pour la propagation DNS après le déploiement
- TESTING.md - Guide complet pour écrire et maintenir les tests
- CONTRIBUTING.md - Guide de contribution au projet
- RESET_LOCALSTORAGE.md - Guide pour réinitialiser les données
- ACCESSIBILITY.md - Rapport de conformité d'accessibilité WCAG AA
MIT
Développé pour l'aide à la décision dans le cadre d'un bilan de compétences.