Jidoka Lab

App · communauté

Padel Dispo

Un créneau proposé, une notification, chacun répond depuis l'écran verrouillé. À quatre, le match est calé et l'un de nous est tiré au sort pour réserver le terrain.

État
bêta privée iPhone et Android depuis septembre 2026 · démontré par le code et les tests
Stack
Swift, SwiftUI, Kotlin, Jetpack Compose, Postgres, fonctions serveur, notifications push
Depuis
2026
Preuves
436 tests automatisés et neuf scénarios de sécurité en base, bêtas iPhone et Android validées par Apple et Google

Le problème

« Qui est dispo demain 21h30 ? » Dans le groupe de discussion du club, la question revient chaque semaine. Les réponses arrivent au compte-gouttes, il faut compter jusqu’à quatre à la main, vérifier les créneaux libres pendant qu’ils partent, puis attendre que quelqu’un se décide à réserver. Souvent, personne ne se décide, et le terrain part.

Ce que j’ai construit

Vidéo de présentation en motion design (1 min, avec musique), écrans de l'app en mode démonstration : joueurs fictifs.
Accueil : onglets des cercles avec le cercle de son niveau, bandeau du mode absence, un match auquel il manque deux joueurs avec Dispo, Peut-être et Pas dispoDétail d'un match : les quatre places, le niveau moyen, une place gardée quelques minutes, les joueurs avec leur côté de jeu et leur niveauProposer un match : choix du jour, grille des créneaux du club, petit mot pour le match, joueurs déjà partants

Une app iPhone et Android pour les joueurs de mon club (nom de travail : Padel Sync). Un joueur choisit un créneau parmi ceux du club, le niveau recherché et les partants déjà connus ; son cercle reçoit une notification et répond sans ouvrir l’app : Dispo, Peut-être ou Pas dispo. Au quatrième Dispo, le match est confirmé et les suivants deviennent remplaçants.

Classement des binômes par cercle, avec un bouton Défier sur les binômes adverses, grisé quand un joueur est absentDéfi reçu : les deux binômes face à face, la réponse de chacun, le temps restant, les boutons Accepter et RefuserAprès la saisie des scores : Comment était ce match ? avec cinq étoiles et le bouton Revanche
Captures de l'app en mode démonstration : les joueurs affichés sont fictifs.

Trois règles viennent directement du terrain. Un « peut-être » garde la place quinze minutes, pas plus, puis la rend au premier remplaçant : les créneaux partent trop vite pour attendre les indécis. La corvée de réservation se tire au sort parmi les quatre ; on peut passer la main, et celui qui se porte volontaire est fêté, badge à l’appui. Et quand le cercle ne suffit pas, l’app prépare le message à poster dans le groupe du club, au format que tout le monde utilise déjà.

Le reste suit la même logique : niveaux du club de 1 à 6+, côté de jeu (gauche, droite ou les deux) avec le côté manquant suggéré seulement quand il est certain, réponse pour un ami qui n’a pas l’app. La réservation elle-même reste dans l’app officielle du club : faute d’interface publique, l’app ouvre la bonne page plutôt que de manipuler le compte d’un joueur.

Depuis, l’app a grandi avec le club. Chaque nouveau joueur passe par un cercle d’accueil puis rejoint automatiquement le cercle de son niveau ; s’il progresse, il peut aussi jouer dans le cercle voisin. Après le match, on saisit les manches, on note la partie en étoiles, et une bonne note propose une revanche aux mêmes joueurs. Le classement des binômes, par cercle et pour tout le club, sert de point de départ aux défis : on choisit un binôme à affronter et son partenaire, les adversaires acceptent ou refusent depuis la notification. Un mode absence coupe les propositions pendant les vacances ou une blessure, et les autres ne voient que la date de retour.

Ce que j’ai vérifié

  • Signal : la logique d’un match (places, remplaçants, place gardée, tirage, défis) est testée à part de l’interface, avec les mêmes cas sur iPhone et sur Android ; les règles d’accès sont rejouées en base par des scénarios qui jouent plusieurs utilisateurs.
  • Contrôle : aucune donnée d’un cercle n’est lisible depuis un autre, une revanche ou un défi n’est visible que par ses quatre joueurs, un absent ne laisse voir que sa date de retour. Chaque évolution de la base est additive, rejouable, et précédée d’une sauvegarde complète.
  • Résultat : 436 tests automatisés (iPhone, Android, notifications) et neuf scénarios en base, une porte de qualité qui doit passer avant chaque livraison, une relecture indépendante par un second agent sur chaque nouveauté, des bêtas validées par Apple et par Google.
  • Limite : bêta privée, distribuée sur invitation ; les premières parties réelles sont saisies, mais il faudra une saison pour savoir si les défis et le classement font vraiment jouer plus.

D’où c’est parti

La première version de cette fiche décrivait un pitch, un système de design et six maquettes, et expliquait pourquoi il n’y avait pas encore de code. Le déclic est venu d’un besoin plus étroit que prévu : pas un réseau de joueurs, juste mon cercle d’amis et une seule question, « on est quatre ? ». Recentré là-dessus, le projet est passé de la spécification à une app en bêta en quelques jours.

Ce que ça raconte

  • Réduire le problème jusqu’à ce qu’il se construise. Le grand projet attendait d’être justifié ; la version pour un seul cercle s’est justifiée toute seule, puis a grandi au rythme des retours des joueurs.
  • Les règles du jeu réel dans l’interface. Créneaux fixes du club, place gardée limitée, tirage au sort, cercles de niveau : chaque règle vient d’une friction vécue, pas d’une fonctionnalité imaginée.
  • Livrer souvent sans rien casser. Deux apps natives au même niveau, des nouveautés presque chaque jour, et pas une donnée de joueur perdue : sauvegarde avant chaque changement de base, porte de qualité, relecture indépendante.
  • Tout gratuit, sans compte exposé. Offres gratuites, pas de SMS, pas d’intégration non officielle : rien qui coûte aux joueurs ni qui les met en risque.

← Tous les projets