Comment je l'ai fait JS / PHP, 2026

Trak

L'écran Chronos de Trak

En bref

Mon carnet de natation : chronos, mètres nagés, records et progression, sur tous mes appareils, même hors ligne.

Auteur

Codé avec l'IA. Je ne sais pas écrire seul ce JavaScript ni ce PHP.

Le problème

Je nage et je voulais garder au même endroit mes chronos par épreuve, mes mètres et mes objectifs. Trak était d'abord un suivi d'habitudes, il est devenu un carnet de natation parce que c'est de ça que je me sers.

Mon rôle

J'ai défini ce que l'application devait faire, choisi entre les propositions, testé sur mon téléphone et demandé les corrections. L'IA a écrit le code.

Décisions

  • Des fichiers JSON plutôt qu'une base de données. Mon hébergement n'a pas SQLite. À l'échelle de quelques comptes, un fichier par compte suffit. Écarté : MySQL, qui ajoutait de l'administration pour rien.
  • Une synchronisation case par case. Chaque valeur porte son horodatage et la plus récente gagne : deux appareils ne s'écrasent pas entièrement. Une suppression laisse une trace, sinon un appareil en retard ferait revenir ce qui a été effacé.

Un vrai bug

Le blocage après trop d'essais de connexion se faisait par adresse IP ou par e-mail. Quelqu'un qui connaissait une adresse pouvait donc bloquer ce compte à distance. Le blocage se fait maintenant par IP seule.

Résultat

Je l'utilise tous les jours. Il fonctionne hors ligne et les modifications partent au retour du réseau.

Limites

Un verrou unique protège tous les fichiers : avec plusieurs dizaines de comptes actifs en même temps, il ralentirait tout. Les inscriptions sont limitées à 15 comptes.

Crédits

Polices libres hébergées sur le serveur, aucun service tiers pour les données.