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Ă©.

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 !
Le site : https://runningmap.rboman.dev/
Et le code source : rboman/running_map
