đŸ‡«đŸ‡· Comment L’IA Agentique M’a Fait Ressusciter Un “Vieux” Side Project

Une version anglaise de cet article est disponible ici.

Depuis que j’ai commencĂ© Ă  travailler (il y a quelques annĂ©es), j’initie des projets GitLab pour tester des outils, des frameworks, faire des PoCs ou bien crĂ©er des projets dont j’espĂšre fortement les terminer. Spoiler, cela n’arrive jamais !

J’ai cependant un side project un peu diffĂ©rent car il concerne ma vie personnelle et familiale : une application de gestion d’arbre gĂ©nĂ©alogique. Une de mes tantes Ă  rĂ©ussi Ă  remonter avant 1800 et a rĂ©ussi Ă  rassembler 300 personnes.

Pour rĂ©pondre Ă  une question qu’on m’a dĂ©jĂ  posĂ©e plusieurs fois, j’ai dĂ©cidĂ© de crĂ©er ce projet pour dĂ©jĂ , m’amuser, tester et apprĂ©hender de nouvelles technologies et, il faut le dire, pour Ă©viter de payer une solution qui, Ă  l’Ă©poque, coĂ»tait et n’était parfois pas adoptĂ©e Ă  mes besoins. Et surtout, je voulais m’amuser et apprendre des choses.

Ce projet est privĂ© car il subit rĂ©guliĂšrement des tests. C’est avec ce projet que j’ai pu m’initier Ă  Kubernetes et dĂ©ployer un cluster sur Google Cloud Platform. Est-ce qu’il y a un intĂ©rĂȘt Ă  avoir cette application utilisĂ©e par 1 ou 2 personnes sur Kubernetes? Clairement non. L’installer sur un Kubernetes sur un Raspberry PI? Non plus mais c’est fun.

Bref, en rĂ©sumĂ©, c’est un projet perso dont l’architecture varie rĂ©guliĂšrement et qui subit mes expĂ©rimentations. C’est d’ailleurs elles qui ont clairement complexifiĂ© le projet et qui me font rĂ©guliĂšrement procrastiner quand il s’agit de faire des Ă©volutions.

🔎 Etat des lieux de mon projet

Ce projet est constitué de plusieurs briques techniques :

  • Au niveau Front end

    • un composant Vuejs pour visualiser l’arbre gĂ©nĂ©alogique. Aucune action n’est possible.
    • un second composant dĂ©diĂ©e Ă  l’administration de l’arbre, en Vuejs Ă©galement.
  • CĂŽtĂ© back end

    • une brique “legacy” en Nodejs, constituĂ©e d’une multitude d’endpoints pour rĂ©cupĂ©rer les donnĂ©es des personnes et calculer les coordonnĂ©es des liens entre les personnes.
    • un back end en Go pour gĂ©rer les traitements “lourds” effectuĂ©s sur toutes les personnes de l’arbre comme le positionnement.
    • un back end en Java / Quarkus pour remplacer le legacy en Nodejs et contenant des fonctionnalitĂ©s plus rĂ©centes.
    • un second back end en Java / Quarkus, dĂ©ployĂ© sur Cloud Run, vĂ©rifie quotidiennement les anniversaires et envoie des notifications.

CĂŽtĂ© infrastructure, et bien la partie Kubernetes que ce soit sur du “Cloud” et sur un Raspberry Ă©voquĂ©e prĂ©cĂ©demment n’existe plus. A l’exception du composant de notifications des anniversaires, aucune infrastructure n’est dĂ©ployĂ©e sur le Cloud, Ă©tant le seul utilisateur. Une configuration docker-compose permet de rapidement dĂ©ployer l’application en local.

Voici une reprĂ©sentation de l’architecture de ce projet.

Old architecture

Comme je le mentionnais au dĂ©but de l’article, beaucoup de choix sont volontaires (et pas forcĂ©ment les meilleurs je vous l’accorde 😁). J’interviens sur ce projet de maniĂšre totalement alĂ©atoire et dĂ©pendant du contexte pro et perso et l’interface de la partie administrateur laisse clairement Ă  dĂ©sirer (le CSS et moi ça fait deux) mais :

  • Ma famille est notifiĂ©e des anniversaires.
  • J’ai numĂ©risĂ© une partie du travail de ma tante.
  • Le dĂ©ploiement sur GCP coĂ»te moins de 5 euros par mois.

✅ Ce sont des objectifs qui me conviennent trùs bien et cela explique pourquoi j’investis moins de temps dans ce projet.

💡 L’arrivĂ©e des Environnement de DĂ©veloppement boostĂ© Ă  l’IA agentic

L’arrivĂ©e de l’IA et des IDEs boostĂ©s Ă  l’IA a Ă©tĂ© pour moi (et pour beaucoup de monde j’imagine) l’opportunitĂ© de les tester et de changer ma maniĂšre de dĂ©velopper. Mon outil de “prĂ©dilection” ? Antigravity de Google. En mĂȘme temps, faisant partie des Google Developer Expert, j’ai l’opportunitĂ© de recevoir des informations directement par mail ou Google Chat et d’assister Ă  des prĂ©sentations. AprĂšs avoir testĂ© d’autres outils comme Cursor ou Claude, je suis restĂ© sur le projet de Google, me convenant le mieux.

Avant sa sortie, j’avais Ă©tĂ© convaincu par IDX qui a Ă©tĂ© repris en Firebase Studio (je vous en parle plus dans cet article https://dev.to/zenika/idx-becames-firebase-studio-be6). Firebase Studio est plus focalisĂ© sur la crĂ©ation de prototypes d’application alors qu’Antigravity est plus portĂ©, de mon point de vue, sur la poursuite d’un projet en mettant le-la dĂ©veloppeur-euse comme un-une orchestrateur-trice d’agents.

Je suis Ă©galement un grand adepte de GitLab Duo que j’ai pu tester sur certains projets. Et le mix GitLab Duo / Antigravity est possible (et trĂšs intĂ©ressant), je vous mets le lien de ce nouvel article https://dev.to/zenika/how-gilab-duo-agent-platform-antigravity-can-collaborate-to-improve-the-quality-of-our-38bm

đŸ€” La relance de mon side project

Venons Ă  l’objectif de cet article, Ă©voquer le fait qu’Antigravity a relancĂ© mon side project. Mon projet Ă©tait fonctionnel et j’ajoutais rĂ©guliĂšrement des ailleuls que trouve ma tante. Mes nombreuses tentatives de reprĂ©sentations graphiques impactent l’architecture et les nouvelles options me demandaient beaucoup de temps pour adapter les composants back end. AprĂšs quelques annĂ©es Ă  ne plus avoir ouvert du JS et des composants Node, l’engouement de faire une migration n’était clairement plus lĂ . J’avais migrĂ© quelques fonctionnalitĂ©s mais il m’en reste encore beaucoup (trop).

Et c’est lĂ  oĂč je me suis dis qu’Antigravity allait m’aider. Je lui confiais souvent des actions purement techniques comme par exemple la migration de la version de Java, la revue de mes fichiers docker-compose ou encore la mise Ă  jour de la documentation. Et quand j’ai pensĂ© Ă  lui demander de reprendre ma merge request (MR) consistant Ă  migrer mon composant Node en Quarkus, j’ai Ă©tĂ© bluffĂ©. Les skills n’existaient pas encore et aprĂšs quelques sollicitations d’un agent en mode “plan”, il a rĂ©ussi Ă  me proposer un plan qui tenait la route. AprĂšs lui avoir validĂ© ce plan, je me suis retrouvĂ© avec un composant Quarkus complĂ©tĂ©. Alors bien sĂ»r, j’ai dĂ» revoir plusieurs choses, mais cela m’a pris quelques heures alors que cette migration m’aurait pris plusieurs jours Ă  le faire Ă  la main.

Dans l’euphorie de cette migration, j’en ai profitĂ© pour lui demander de supprimer le composant Go pour le remplacer par du Quarkus. Le code Ă  migrer Ă©tait beaucoup moins important et n’a pas eu besoin de retouche.

C’est pour moi Ă  ce niveau oĂč l’IA va pouvoir nous aider et nous accompagner Ă  rĂ©aliser des actions qui sont clairement un peu moins “sexy” Ă  faire.

💡 Discuter avec les agents IA en mode plan permet de s’assurer que votre demande est bien comprise et que la proposition respecte bien vos attentes. Si ce n’est pas le cas, vous pouvez le revoir et l’ajuster et ce n’est qu’une fois que vous ĂȘtes d’accord que vous demandez l’exĂ©cution du plan. C’est le principe de l’”AI Driven Development”.

🚀 Un side projet reboostĂ© en quelques semaines

AprĂšs avoir migrĂ© mes deux briques Node et Go, je me retrouve donc avec moins de composants, orientĂ©s dans une “cible” technique que je maĂźtrise, Quarkus et Vuejs. L’application est plus simple et pouvoir me concentrer sur des nouvelles fonctionnalitĂ©s amĂšne un coup de boost Ă  bosser sur ce projet.

Antigravity m’a Ă©galement aidĂ© Ă  revoir et harmoniser la partie graphique de l’interface administrateur. La dessus, j’avoue clairement que je lui fait totalement confiance quand il me propose des modifications sur le style de mon application. De toute façon, cela ne peut pas ĂȘtre pire que si je le fais de mes propres mains ! 😂

Un autre aspect intĂ©ressant, ce sont les longues discussions avec l’agent en mode plan pour essayer de voir comment challenger diffĂ©rents aspects techniques comme l’architecture, mĂȘme si elle est trĂšs simple pour permettre d’optimiser certains aspects ou alors pour rĂ©flĂ©chir sur des pistes d’amĂ©lioration et la mise en place de nouvelles fonctionnalitĂ©s.

Voici l’architecture telle qu’elle existe actuellement :

New architecture

DĂ©sormais, ce sont 60% des lignes de code de ce projet qui sont en Java. Je n’ai malheureusement pas la statistique avant cette expĂ©rimentation mais NodeJS devait se trouver Ă  Ă©galitĂ© avec Java.

New architecture

🔑 Les points à retenir

L’IA m’a clairement permis d’accĂ©lĂ©rer le dĂ©veloppement de mon side project sur des tĂąches qui n’avaient pas rĂ©ellement de plus value et qui ne m’intĂ©ressaient peu ou pas. Je ne suis pas bon en front, l’IA m’a aidĂ© Ă  amĂ©liorer cette partie et c’est quand mĂȘme plus agrĂ©able de travailler et de faire Ă©voluer un produit qui nous plaĂźt directement non? 😊 Ma motivation a Ă©tĂ© grandement amĂ©liorĂ©e depuis que j’ai pu voir ces migrations initiĂ©es il y a un moment se resoudre. Maintenant que je me suis “amusĂ©â€ techniquement, je vais maintenant me concentrer sur terminer ce projet. Non je dĂ©conne je ne le terminerai jamais 😂 mais je veux aller jusqu’au bout, terminer la mise Ă  disposition de l’arbre Ă  ma famille et amener des nouvelles fonctionnalitĂ©s comme la gestion de photos.

💡 Fan de Gemini-cli, le mode plan est dĂ©sormais disponible dans cette version sortie le 11/03 : https://github.com/google-gemini/gemini-cli/discussions/22078