← travaux
La vue d'ensemble du site : une spirale de panneaux d'images colorés qui tourne en 3D sous un voile, et à droite « Hey ! Moi c'est Tony Moura Salgueiro. »

● projet perso▸ 03Asept. 2026 — aujourd'hui

Ce portfolio, une rétrospective

rôle
Conception, direction artistique et architecture
outils
  • Next.js
  • React Three Fiber
  • three.js
  • GSAP
  • TypeScript
  • Python
  • Vercel

L'idée

Un portfolio pensé comme une rétrospective d'exposition : on y marche, et le parcours, les projets professionnels et personnels y sont accrochés dans l'ordre. La référence, c'est la rampe en spirale du Guggenheim : on part du présent, en haut, et on descend dans le temps. La rampe boucle sans fin, et une salle à part, la galerie, accueille la pratique artistique : photographie, expériences WebGL, rendus 3D.

Le site est un appareil photo

Chaque mécanique est un geste de photographe. On vise sur la rampe : le curseur est un télémètre, l'image se dédouble avec la vitesse et se recale quand on s'arrête. On déclenche en ouvrant une pièce : la transition est un obturateur. On développe dans la galerie : les images sont latentes, et le curseur les révèle à son passage. Même le chargement compte les pourcentages comme une chambre noire.

L'écran de chargement : un grand « 39 % » en caractères larges et la ligne « création du monde… », sur fond sombre.
Le chargement, de 0 à 100 %.
La marche dans la spirale : un panneau violet courbé face à la caméra, encadré par les crochets du viseur, la mini-hélice à gauche et le cartel de la pièce en bas à droite.
La marche : le viseur se pose sur une pièce.
La galerie : une planche-contact de cadres sur un fond teinté de rouge inactinique, certains développés en couleur, d'autres encore pâles, avec leurs numéros de bord de film en corail.
La galerie, une planche-contact que le curseur développe (ici avec le contenu de démonstration, comme les autres captures).

La direction artistique

Un noir chaud (#141210), un blanc chaud (#F4F1EC) et un seul accent corail (#E9554F), celui de la lumière inactinique et du crayon gras, une fois par écran. Le thème clair est un papier photographique crème, et le site suit l'heure : clair de 8 h à 19 h, sombre ensuite, jusqu'à ce qu'on choisisse. Les titres sont en Prototype, le texte en Geist, les étiquettes en Geist Mono, sur un sol vivant qui ondule sous un grain de film.

La vue d'ensemble en thème clair : la spirale de panneaux sur un fond crème, et le titre en noir.
Le thème clair, sur papier photographique.

La grammaire est photographique jusque dans les détails : des numéros d'inventaire de bord de film (▸ 12A), des images « latentes » pendant le chargement, une page 404 en « vue voilée ».

L'architecture

Un export statique Next.js, avec la scène 3D en React Three Fiber. Le canvas WebGL vit dans le layout racine et n'est jamais détruit : changer de page ne remplace que le HTML, la scène et ses textures restent. Les animations tournent dans la boucle de rendu, jamais par des rendus React. Le contenu est du YAML validé par Zod au build, et un pipeline Python encode chaque image en AVIF et WebP à plusieurs tailles, avec son aperçu latent, sa couleur dominante et ses données EXIF.

La chaîne du site : le dossier content (YAML et médias sous Git LFS), écrit par l'éditeur local, passe par le pipeline Python, qui produit le manifeste et ses types ; Next.js en fait un export statique avec un canvas 3D persistant, vérifié en CI avant d'être publié sur Vercel.

Le contenu ne touche jamais au code : ajouter une pièce, c'est ajouter un dossier. Un éditeur local permet de tout faire sans fichier ni ligne de commande : écrire en français et en anglais, déposer des images, composer le récit en blocs, et voir le rendu réel avant de publier.