Modernisation, performance et fiabilité d'une suite d'applications métier de gestion des commandes (ASP.NET Core, Angular, SQL Server), au sein d'une organisation d'environ quinze développeurs. Au-delà des développements prévus, j'ai traité seul et de ma propre initiative le travail de fond qui conditionne la fiabilité des livraisons : modernisation du front, performance des tests et de la CI, restructuration de la couche visuelle et design system.
Modernisation du front-end
De ma propre initiative, j'ai mené seul la migration d'Angular 17 à Angular 21, de l'analyse à la mise en production. Pour les transformations que les outils officiels ne couvrent pas, j'ai écrit des codemods AST qui ont automatisé la réécriture du code. J'ai ensuite migré la suite de plus de 900 tests de Jest vers Vitest et je l'ai parallélisée : son exécution est passée d'environ 20 minutes à 30 secondes.
Intégration continue
J'ai mesuré puis optimisé seul le pipeline front, qui est passé de 30 minutes à 5 ou 6 minutes. Avec environ cinq exécutions par jour et jusqu'à dix-neuf les jours de pointe, cela représente près de deux heures d'attente gagnées chaque jour, et près de huit heures les jours chargés. J'ai également contribué à ramener le pipeline back de 20 à 7 minutes, dans le cadre d'un chantier partagé (environ neuf exécutions par jour).
Changelog automatique
J'ai mis en place un journal des livraisons généré par la CI/CD à partir des work items Azure DevOps. Il fonctionne en ajout seul : le pipeline reprend l'artefact changelog.json de la version précédente et y ajoute les work items livrés depuis la dernière version taggée. Le fichier est intégré à l'application, ce qui permet de suivre les livraisons depuis l'interface.
Performance applicative
J'ai profilé une page complexe, identifié des cascades de chargement séquentielles, puis je les ai supprimées : son affichage est passé d'environ cinq secondes à une seconde.
Thème et design system
J'ai repris de ma propre initiative une couche visuelle chaotique : composants instables ou difficiles à intégrer, couleurs disparates d'un écran à l'autre. Je l'ai restructurée en un thème cohérent fondé sur des variables partagées. Sur cette base, j'ai étendu et fiabilisé les composants du design system, chacun accompagné d'une page de démonstration, ce qui accélère le développement et garantit la cohérence entre les équipes.
Retour en temps réel
J'ai fait passer en temps réel plusieurs envois, en particulier les échanges interapplicatifs. L'utilisateur voit désormais le résultat immédiatement, sans rafraîchir la page. J'ai aussi enrichi les états d'erreur pour qu'un échec soit compréhensible sans passer par le support.
Recherche d'agence
J'ai refondu le parcours de changement d'agence, qui reposait sur une recherche fragile par code de ville. Je l'ai remplacé par une recherche floue instantanée (Fuse.js) sur la ville, l'adresse et les autres attributs de l'agence.
Profils et permissions
J'ai co-conçu un système transverse de permissions, désormais en production à la place de contrôles dispersés propres à chaque fonctionnalité. Le calcul des droits combine les groupes Active Directory, les données de l'utilisateur en base et la session, puis les rapproche de profils hiérarchiques et de règles dynamiques. Le même résultat pilote l'affichage dans Angular et les contrôles d'accès des API .NET. Le modèle est validé par de nombreux cas positifs et négatifs générés à partir des conditions d'accès, et revu avec les responsables produit. J'ai aussi participé à la normalisation des mécanismes d'authentification.
Intégration de prestations externes
J'ai intégré un système d'évaluation d'articles de commande à partir d'API de prestataires externes : règles de gestion, suivi et affichage des statuts, gestion des erreurs et journalisation des échanges.
Socle .NET
De ma propre initiative, j'ai centralisé les règles de build dans Directory.Build.props et verrouillé les dépendances. J'ai aussi évalué .NET 10 et Nix pour préparer les prochaines évolutions sans perturber la production.
Contexte
La suite échange des données au moyen d'API JSON, de flux interapplicatifs et d'un bus de services, avec l'introduction progressive de CQRS. Elle est développée par plusieurs équipes, soit environ quinze développeurs et quatre à cinq interlocuteurs produit, en Agile avec Azure DevOps. En l'absence d'équipe de test dédiée, les développeurs portent les tests automatisés.
Stack : C#, .NET 7/8, ASP.NET Core, Angular 17–21, TypeScript, SQL Server, Azure App Service, Azure DevOps, Active Directory, Fuse.js, Jest, Vitest
