Tous les projets

Labo2026

Photothèque

Une seule bibliothèque de photos qui alimente la galerie et les étapes des randonnées, chaque usage déclaré explicitement.

  • sharp
  • exif
  • vite
  • zod

Un seul dossier#

Toutes les photos vivent à un seul endroit. Y déposer un fichier suffit pour qu'il apparaisse dans la galerie; un hidden: true l'en retire sans l'empêcher de servir ailleurs, par exemple dans une étape de randonnée.

Déclarer, pas deviner#

Une étape de randonnée déclare elle-même les photos qu'elle montre. J'aurais pu les rattacher automatiquement, d'après l'heure ou la position GPS de chaque prise de vue, mais une photo prise depuis un sommet montre souvent autre chose que ce sommet. Le lien entre une photo et une étape est un choix éditorial: il s'écrit à la main.

En échange, le chargement vérifie chaque référence. Un nom absent de la bibliothèque, ou une image utilisée dans le texte sans être déclarée, fait échouer le build avec un message clair. Une photo ne disparaît jamais en silence.

Le pipeline#

Chaque source passe par sharp: AVIF et WebP à 640, 1024, 1920 et 3840 px, orientation corrigée, métadonnées retirées. L'EXIF utile (boîtier, objectif, réglages, heure de prise de vue) est conservé à part, pour être affiché à côté de la photo. Un placeholder thumbhash est calculé au build, sans JavaScript côté client. Le tout est incrémental: seule une source modifiée est ré-encodée.

La galerie#

La mosaïque n'a besoin d'aucune bibliothèque: la taille de chaque photo est connue d'avance, donc chacune est placée dans la colonne la plus courte, dans l'ordre de lecture, sans jamais bouger pendant le chargement.

Les mêmes photos servent aussi aux visites 3D, où chacune s'affiche à l'étape qui la déclare.