Pronos WM 26
Un jeu de pronostics pour la Coupe du monde, entre famille et amis — parce que le grand outil existant fonctionne, mais que son UX est pénible.

Ma famille et mes amis voulaient un jeu de pronostics pour la Coupe du monde, sans les frictions du grand outil existant. J’ai donc construit le nôtre — ligues sur invitation, pronostics verrouillés au coup d’envoi, classement en direct et chat — et je l’ai fait tourner en conditions réelles pendant tout le tournoi.
Voir: kicktip-wm26.vercel.app ↗- Rôle
- Product owner, designer & développeur (solo)
- Équipe
- Solo, assisté par IA (Claude Code)
- Contexte
- Produit personnel, vrais utilisateurs
- Outils
- Next.js, Supabase, Vercel, Web Push, TypeScript

Le problème
Les utilisateurs étaient tout trouvés : ma famille et mes amis — dont beaucoup ne sont pas à l’aise avec la tech, répartis entre foyers francophones et germanophones. Le besoin était simple : pronostiquer chaque match, voir qui mène, se chambrer. L’outil existant faisait le job, mais s’inscrire, saisir ses pronos et suivre le classement ressemblait à une corvée.
Principes de design
- Zéro friction pour rejoindre. Code d’invitation + pseudo + code PIN au lieu d’un e-mail et d’un mot de passe. Aucune grand-mère ne devrait avoir à réinitialiser son mot de passe.
- Équitable par conception. Les pronostics se verrouillent au coup d’envoi — appliqué côté serveur, pas simplement masqué dans l’UI — et les choix de chacun restent secrets jusque-là.
- Le fun est une fonctionnalité. Le jeu vit de sa dimension sociale : classements, séries, duels et chambrage.
Ce que j’ai construit
- Pronostics avec sauvegarde automatique, compte à rebours avant le coup d’envoi et verrouillage côté serveur.
- Classement en direct avec évolutions de rang, séries, badges et podium ; une vue duel en face-à-face.
- Tableau de la phase finale qui remplace automatiquement les équipes provisoires.
- Plusieurs ligues, chacune avec son code d’invitation et son chat en temps réel.
- Boucle d’engagement : PWA installable, rappel push quotidien pour les pronostics en attente, et image du classement à partager.
- Trois langues (FR / DE / EN) — le groupe les parlait toutes.
En conditions réelles
Le vrai test a commencé avec le tournoi. Construire pour un événement en direct, c’est prévoir que des choses vont mal tourner :
- Des données résilientes : un jeu de données ouvert et gratuit comme base, une API de scores en direct en surcouche optionnelle, et la saisie manuelle par un admin comme filet de sécurité — les résultats saisis à la main l’emportent toujours sur la synchronisation automatique.
- Des correctifs sous charge réelle : pagination pour contourner les limites de lignes de la base de données, timeouts de synchronisation, un correctif de confidentialité pour que les chats ne fuient jamais d’une ligue à l’autre, et du rate limiting sur les connexions.
- Des arbitrages de scope pendant l’événement : une sparkline de l’évolution du rang a été retirée suite aux retours des utilisateurs ; la vue duel est restée.

Résultat
Le jeu a tourné pendant tout le tournoi pour ma famille et mes amis, et le post LinkedIn qui le présentait a dépassé les 1 400 impressions.
Ce que j’en retiens
Construire pour des gens qu’on connaît, c’est la boucle de feedback la plus rapide qui existe — on entend parler de chaque bug au dîner. Cela m’a appris à privilégier la confiance et la fiabilité plutôt que le nombre de fonctionnalités, et à livrer, observer puis ajuster pendant que le produit est utilisé.