Skip to content

Modernisation Tropolink (Front-end) 2025

📋 Vue d'ensemble

Objectif général

Modernisation complète de l'application React Tropolink en préservant toutes les fonctionnalités existantes, avec approche progressive et sécurisée.

Principes directeurs

  • Sécurité : Chaque modification fait l'objet d'un commit avec tests
  • Compatibilité : Préservation absolue des fonctionnalités existantes
  • Progressivité : Approche par phases pour limiter les risques
  • Qualité : Versioning SemVer et maintenance du CHANGELOG.md

Structure du plan

  • Phase 1 : Factorisation et tests ( TERMINÉE)
  • Phase 2 : Modernisation des dépendances critiques ( TERMINÉE)
  • Phase 3 : Mise à jour des dépendances non-critiques (🔄 EN COURS)
  • Phase 4 : Mises à jour majeures futures (📋 PLANIFIÉE)

🎯 Réalisations accomplies

Phase 1 - Factorisation et tests (v0.3.1 → v0.5.0)

  • 278 tests unitaires avec framework Vitest 3.2.4
  • Factorisation API : réduction de 80% du code dupliqué
  • 12 modules d'utilitaires avec tests complets
  • 6 hooks personnalisés réutilisables
  • Conformité WCAG 2.1 AA complète

Phase 2 - Modernisation dépendances critiques (v0.6.0 → v0.9.0)

  • Node.js 16.14 → 22 LTS
  • React 17.0.2 → 18.3.1 (concurrent features, createRoot API)
  • Material-UI 5.2.7 → 6.5.0
  • TypeScript 4.4.4 → 5.8.3
  • Vite 2.7.2 → 5.4.19 (build 30% plus rapide)
  • Authentification @react-keycloak/webreact-oidc-context

🔄 Phase 3 - Dépendances non-critiques (v0.10.0)

  • @testing-library/react 13.4.0 → 16.3.0
  • @testing-library/jest-dom 5.17.0 → 6.6.3
  • jsdom 20.0.3 → 26.1.0 (6 versions majeures)
  • uuid 8.3.2 → 11.1.0
  • dompurify 2.3.4 → 2.5.8 (sécurité XSS)
  • marked 4.0.8 → 16.1.0 (12 versions majeures)

🛠️ Améliorations critiques

Interface utilisateur

  • Page d'accueil complète avec navigation intelligente selon l'authentification
  • Système de logout amélioré avec feedback utilisateur
  • Composants modernisés avec patterns React 18
  • Accessibilité maintenue à 100% WCAG 2.1

Architecture technique

  • Client API centralisé avec gestion d'erreur robuste
  • Hook useDownload pour téléchargements avec états de chargement
  • Système de notifications unifié
  • TypeScript strict sans erreurs de compilation

Corrections critiques

  • TypeError dans parseLocations/parseTrajectory pour fichiers JSON malformés
  • Boucles infinies React 18 StrictMode avec désactivation contrôlée
  • 103 erreurs TypeScript résolues par migration écosystème i18n
  • Tests timing corrigés pour useDownload asynchrone

📊 Métriques de qualité

  • Tests : 278/278 passent (100% succès maintenu)
  • Couverture : 95% sur les utilitaires
  • Performance : Build 30% plus rapide, dev server <1s
  • Sécurité : 0 vulnérabilité critique
  • TypeScript : 0 erreur en mode strict

🔧 Configuration

Infrastructure modernisée

  • Vitest 3.2.4 avec @vitest/coverage-v8
  • Pipeline CI/CD configuré
  • ESLint optimisé avec exclusions coverage
  • Vite configuré port 3000 (compatibilité Keycloak)

Authentification sécurisée

  • OIDC moderne avec react-oidc-context
  • AuthGuard centralisé
  • Tokens gérés automatiquement
  • Session management optimisé

🎉 Impact

  • Application production-ready avec authentification moderne
  • Architecture maintenable pour futures évolutions
  • Performance optimisée avec build system moderne
  • Sécurité renforcée avec bibliothèques à jour
  • Developer Experience améliorée avec TypeScript 5.8

Modernisation complète avec zéro régression fonctionnelle

Edited by Benjamin Marguin

Merge request reports

Loading