Il y a quelques semaines, et plus prĂ©cisĂ©ment quand j’ai Ă©crit mon dernier article de blog sur mon changement de rĂ©gime, j’ai dĂ©cidĂ© de mettre au point le site web dont je rĂȘvais grĂące Ă  Codex.

L’idĂ©e de dĂ©part est assez simple : je voulais un site qui montre une carte gĂ©ographique sur laquelle s’afficheraient en mĂȘme temps toutes les traces GPX de mes marches ADEPS du dimanche. Le but est de pouvoir en sĂ©lectionner une ou l’autre et de voir oĂč elles se croisent, d’identifier Ă©galement les chemins que j’ai empruntĂ©s plusieurs fois. Et, comme bonus, avoir mes photos sous forme d’épingles cliquables sur cette carte interactive. En effet, lors des marches, il est devenu trĂšs courant que je repasse au mĂȘme endroit et que je me dise : « Ah, mais je suis dĂ©jĂ  venu ici il y a quelques mois, et c’était l’automne ; il y avait un tracteur devant cette ferme, et un cheval que j’ai pris en photo
 »

La version payante de Strava Ă  laquelle je suis abonnĂ© propose quelque chose de semblable. Mais on ne peut pas sĂ©lectionner spĂ©cifiquement les seules marches ADEPS du dimanche. De plus, j’aurais aimĂ© visualiser toutes les photos que je prends chaque semaine sur cette mĂȘme carte. LĂ  aussi, Strava propose un affichage de photos depuis peu de temps, mais il se limite aux photos qui ont Ă©tĂ© uploadĂ©es sur Strava, Ă©videmment. Enfin, Strava ne permet pas de partager la carte facilement Ă  mes amis qui courent aussi avec moi, ou dans la rĂ©gion de leur cĂŽtĂ©.

strava

Aujourd’hui, grĂące Ă  l’intelligence artificielle, tout devient possible ! Je peux donc simplement dĂ©crire mon rĂȘve et (faire) construire mon site itĂ©rativement. La difficultĂ© est plus de construire quelque chose de maĂźtrisable, simple et maintenable sur le long terme que d’avoir un rĂ©sultat impressionnant le jour mĂȘme.

En me lançant lĂ -dedans, je voulais aussi apprendre de nouvelles choses. Mais pas trop, pour ne pas ĂȘtre submergĂ© par les nouveautĂ©s et subir un dĂ©bordement de cerveau !

Je me suis donc limitĂ© Ă  un site statique : pas de base de donnĂ©es, pas de possibilitĂ© d’ajouter de nouvelles courses via l’interface web. Juste du HTML et des donnĂ©es prĂ©construites localement sur mon PC, avec un peu de JavaScript pour faire moderne.

J’ai Ă©tĂ© trĂšs vite confrontĂ© Ă  beaucoup de problĂšmes que je ne soupçonnais pas au dĂ©marrage :

  • Les traces GPX de mes parcours, que je tĂ©lĂ©charge aprĂšs ma course depuis Strava, sont beaucoup trop lourdes. Il faut donc les simplifier avant de les afficher.
  • J’ai Ă©normĂ©ment de photos. Je ne peux donc pas envisager de les envoyer telles quelles sur GitHub Pages, l’endroit que j’envisageais pour publier le site.
  • Lorsque j’allais envoyer le lien de mon site Ă  mes amis, ils allaient Ă©videmment le recevoir sur leur tĂ©lĂ©phone. Le site devait donc ĂȘtre joli sur GSM !

AprĂšs un long brainstorming avec ChatGPT (c’est la maniĂšre dont je dĂ©bute chaque projet de vibe coding avant mĂȘme d’ouvrir Codex), je suis arrivĂ© Ă  une architecture trĂšs simple :

  • Codex me fait des scripts Python qui vont aller rechercher dans ma Dropbox toutes les donnĂ©es dans leur format haute rĂ©solution.
  • Ces donnĂ©es vont ĂȘtre simplifiĂ©es par les scripts : le nombre de points des traces va ĂȘtre rĂ©duit. La rĂ©solution des images sera Ă©galement diminuĂ©e ; une version « miniature » sera gĂ©nĂ©rĂ©e.
  • Dans un premier temps, toutes ces donnĂ©es sont stockĂ©es dans l’architecture du site en local. Avec le nombre de marches que j’ai effectuĂ©es juste depuis janvier 2025, ça fait tout de mĂȘme prĂšs de 200 Mo, une taille qui est dĂ©jĂ  jugĂ©e trĂšs limite pour GitHub Pages.

Une fois qu’il a Ă©tĂ© question de mettre le site en ligne, j’ai donc rĂ©flĂ©chi Ă  nouveau avec ChatGPT au sujet du stockage des donnĂ©es annexes. Il m’a conseillĂ© de garder GitHub Pages pour le site, mais de stocker les images sur Cloudflare R2. N’ayant jamais essayĂ© ce genre de service, je me suis lancé  Et pris au jeu, j’ai mĂȘme achetĂ© un nom de domaine pour personnaliser l’adresse du site (et apprendre une fois pour toutes comment tout ça fonctionne).

La mise au point du site Ă  partir de rien m’aura pris environ une seule journĂ©e, interrompue plusieurs fois par des tĂąches mĂ©nagĂšres et en comptant la grosse partie de l’aprĂšs-midi qui a Ă©tĂ© rĂ©servĂ©e Ă  la dĂ©couverte de Cloudflare. J’ai eu des Ă©toiles dans les yeux toute la journĂ©e.

Concernant le cĂŽtĂ© « responsive » du site, c’est-Ă -dire la maniĂšre dont il s’affiche sur diffĂ©rents terminaux, dont les tĂ©lĂ©phones, j’ai dĂ» y consacrer une demi-journĂ©e supplĂ©mentaire, une fois le site en ligne. Ça aura pris pas mal d’itĂ©rations pour avoir quelque chose de bien joli.

Bien Ă©videmment, lorsque j’ai envoyĂ© le premier lien fonctionnel Ă  mes connaissances, on m’a tout de suite demandĂ© de nouvelles fonctionnalitĂ©s : « On veut pouvoir tĂ©lĂ©charger les traces ! », « Ce serait bien de voir le profil altimĂ©trique aussi ! ». Je me suis donc fait un plaisir de demander Ă  Codex d’implĂ©menter tout ça immĂ©diatement (« Je vais faire ça avant ma rĂ©union Teams dans une demi-heure ! »). C’est vraiment incroyable comme c’est efficace. D’une part, je deviens moi-mĂȘme beaucoup plus efficace avec Codex, mais j’ai l’impression que l’évolution des modĂšles et des agents est fulgurante. Ça devient de plus en plus simple d’une semaine Ă  la suivante. Quasiment aucune erreur. TrĂšs peu d’incomprĂ©hension. Alors que je me suis pourtant forcĂ© Ă  dĂ©marrer une conversation Ă  chaque nouvelle « feature ».

Une telle application web, il y a quelques annĂ©es, je n’aurais mĂȘme pas rĂȘvĂ© pouvoir consacrer le temps nĂ©cessaire Ă  son dĂ©veloppement. Tout d’abord, je ne maĂźtrise pas trĂšs bien JavaScript (je sais seulement le lire et avancer par analogie avec le C++ que je connais bien mieux). Je sais aussi, par expĂ©rience, que jongler avec les CSS est un vrai casse-tĂȘte. Enfin, envisager de mettre des donnĂ©es dans le cloud derriĂšre un nom de domaine qui m’appartient, ça m’aurait pris des heures et des heures de recherche sur Google pour simplement comprendre comment ça fonctionne
 C’est juste incroyable. J’ai l’impression d’avoir gagnĂ© des dizaines d’annĂ©es de vie devant moi pour rĂ©aliser tous mes projets !

💡