GoatUp : livrer un site à un vrai client, seule du brief à la mise en ligne
GoatUp est un projet client réel, mais pas un projet commandé : c'est moi qui l'ai proposé à ce coach de streetlifting, pour m'entraîner sur un cas concret et parce que ce qu'il faisait m'inspirait. Aucune rémunération à la clé, juste l'envie de sortir du cadre protégé de l'école, sans intermédiaire, sans chef de projet entre lui et moi. Rien qu'un cahier des charges tenant en quelques messages, et moi de l'autre côté.
Un besoin flou, à moi de le structurer
En école, le besoin est déjà cadré par un énoncé. En vrai, il faut le construire soi-même. Avant d'écrire une ligne de code, j'ai posé les questions qui manquaient : qui utilise le site, sur quel appareil, qui va le maintenir après la livraison, quel est le vrai budget de temps du client pour me fournir du contenu.
- ▸Prioriser trois fonctionnalités indispensables plutôt que dix vagues idées.
- ▸Fixer un périmètre écrit, même informel, pour éviter le glissement de scope.
- ▸Anticiper qui alimentera le site une fois le projet livré, pas moi, sur la durée.
Une identité visuelle taillée pour le coaching
Avant d'écrire la moindre ligne de code, il fallait une direction artistique qui parle immédiatement à un public de streetlifting et de street workout : pas un site de coaching générique et pastel. J'ai posé un fond noir quasi total, et une seule couleur qui tranche dessus, un vert néon presque agressif, pour porter l'énergie d'une salle et le logo en tête de chèvre stylisée du client.
Le nom joue sur un double sens qui a directement guidé le logo : GOAT, c'est l'acronyme anglais de "Greatest Of All Time", le meilleur de tous les temps, un terme que tout pratiquant de streetlifting connaît par cœur. Mais GOAT, c'est aussi littéralement la chèvre en anglais. Le "UP" vient boucler l'idée : progresser, s'élever, devenir le meilleur. D'où la tête de chèvre stylisée en logo, un clin d'œil visuel direct à ce jeu de mots.

Coder pour quelqu'un qui prendra le relais sans moi
La plus grande différence avec un projet scolaire : le code doit survivre après moi. J'ai privilégié des choix simples et documentés plutôt que des solutions techniquement impressionnantes mais difficiles à reprendre pour un futur développeur, ou pour moi-même six mois plus tard.
// Un formulaire de réservation volontairement explicite,
// pas la solution la plus courte mais la plus lisible à reprendre
function BookingForm({ onSubmit }) {
const [slot, setSlot] = useState(null);
const isValid = slot !== null;
return (
<form onSubmit={(e) => {
e.preventDefault();
if (isValid) onSubmit(slot);
}}>
<SlotPicker value={slot} onChange={setSlot} />
<button type="submit" disabled={!isValid}>
Réserver ce créneau
</button>
</form>
);
}Le meilleur code n'est pas celui qu'on est fier d'écrire, c'est celui qu'un autre peut reprendre sans moi.
Ce que je retiens de GoatUp, c'est une posture plus que des lignes de code : écouter avant de proposer, cadrer avant de développer, et accepter qu'un projet client ne se termine jamais vraiment à la mise en ligne : il continue de vivre, avec ou sans moi.
