Kynn
Répartir les corvées, le calendrier et le budget d'une famille nombreuse, avec une rotation que personne ne peut contester.
Dans une famille nombreuse, la charge ne se répartit pas toute seule : elle retombe sur ceux qui ne discutent pas. Kynn fait tourner les corvées selon une règle écrite une fois pour toutes, tient le calendrier commun et suit le budget. L'idée directrice est que la rotation soit visible par tout le monde — quand chacun voit son tour arriver, il n'y a plus rien à négocier.
Avant d'écrire du code, j'ai rédigé un document d'architecture complet : modèle de données, moteur de rotation, économie de points, sécurité, conformité. Il sert encore de référence, et il est mis à jour à chaque livraison.
Ce que l'application fait
Aujourd'hui
L'écran d'accueil de chaque membre : ce qu'il a à faire maintenant, et rien d'autre.
Rotation des corvées
Un moteur qui distribue les tâches à tour de rôle, avec remplacements, absences et validation par un parent.
Points et boutique
Des points gagnés en accomplissant les tâches, dépensés dans une boutique paramétrée par les parents, une cagnotte commune et une enchère mensuelle.
Calendrier
Le calendrier commun du foyer, avec les événements de chacun.
Budget
Comptes, catégories, dépenses récurrentes, et une tirelire par enfant qu'il peut alimenter avec ses points si les parents l'autorisent.
Espace parent
Membres, tâches, boutique, budget, réglages et export des données, séparés de l'espace enfant.
Le registre d'équité
C'est le cœur du produit. Quand une corvée passe d'un enfant à un autre — parce qu'il a acheté un « passe », qu'il est absent, ou qu'ils ont échangé —, le remplacement n'est jamais gratuit : celui qui reprend touche les points plus une prime de 25 %, et une ligne est écrite au registre : A doit un tour à B.
À la génération suivante, si A doit un tour à B et qu'il est disponible, le moteur l'assigne à la place de B et solde la ligne. La dette se rembourse toute seule, sans qu'un parent ait à arbitrer.
- Un passe qui s'annulait lui-même. Le test du moteur, sur neuf jours et trois enfants, a montré qu'un enfant qui venait d'acheter « pas de vaisselle pendant trois semaines » était rappelé dès le lendemain pour rembourser. Le remboursement attend maintenant la fin du passe.
- Un curseur qui avançait deux fois. Une première version faisait avancer la rotation aussi pendant la recherche du remplaçant : sur la fenêtre de test, la répartition donnait 4 / 2 / 3 au lieu de 3 / 3 / 3, alors que le registre était soldé. Le curseur avance maintenant d'exactement un cran par tâche.
Une économie de points qui tient debout
Le premier risque du produit, c'est l'effondrement de l'économie : des récompenses trop chères, et plus personne ne joue le jeu. Trois garde-fous l'évitent.
- Le prix affiché en jours. Pendant qu'un parent fixe le prix d'une récompense, l'écran calcule combien de jours il faudra à chaque enfant pour se l'offrir, à son rythme réel. Un parent qui lit « quatre mois » corrige le prix de lui-même : c'est plus efficace qu'une limite.
- Une cagnotte commune. Chacun peut y verser des points pour une récompense collective — le seul contrepoids à la compétition dans une fratrie. Si elle est abandonnée, chaque contributeur est remboursé intégralement ; sinon, plus personne ne verserait.
- Une enchère qui ne bloque personne. Miser ne débite pas : un enfant dont les points seraient bloqués une semaine ne miserait plus. Si le meilleur enchérisseur n'a plus les points à la clôture, l'enchère passe au suivant plutôt que de creuser un solde négatif.
- Un solde qui n'est jamais stocké. Le solde de points est la somme d'un journal auquel on ne fait qu'ajouter. Aucune colonne de solde à resynchroniser, aucune écriture possible depuis le navigateur.
Le budget du foyer
- Un enfant ne voit pas le budget du foyer. Ni les comptes, ni les dépenses. Seulement sa propre tirelire. Et pour un enfant de moins de douze ans, le solde affiché ne descend jamais sous zéro — la règle est appliquée dans la base, pas dans l'écran : la même ligne rend un chiffre différent selon qui la lit.
- Des centimes entiers, partout. Aucun montant ne devient un nombre à virgule, même le temps d'un affichage.
- Convertir des points en euros, en une seule opération. Désactivé par défaut, plafonné par enfant, et fait dans une seule transaction : un débit de points sans crédit de tirelire, ce serait de l'argent créé ou détruit. Une conversion ne s'annule pas, pour ne pas ouvrir la porte à des allers-retours.
- Aucune dépense qui apparaît seule. Les dépenses récurrentes sont proposées « à confirmer » par défaut : une écriture que personne n'a décidée fait douter du solde affiché.
Des enfants, et leurs données
- De vrais comptes, sans adresse e-mail. Chaque enfant a un compte réel, créé uniquement par le serveur, qu'il déverrouille avec un code à six chiffres. Cinq échecs bloquent le compte quinze minutes, contrôlé côté serveur. Toute action reste attribuable.
- La conformité dès le modèle. Consentement parental, pages dédiées aux mineurs, base hébergée dans l'Union européenne, photos de preuve supprimées automatiquement, export et effacement des données du foyer. Ce n'est pas une couche posée à la fin : ça a façonné le modèle depuis le début.
- Prouver que le cloisonnement tient. La suite de bout en bout crée un vrai foyer avec trois enfants, exerce un remplacement, puis vérifie surtout ce qui doit échouer : un enfant ne valide pas sa propre corvée, ne s'attribue pas de points, ne lit pas le journal d'un autre, et un foyer ne voit rien d'un autre foyer.
Ce que j'en retiens
Le sujet paraissait léger, il ne l'était pas : dès qu'un produit s'adresse à des enfants, les questions de consentement, de conservation et d'accès arrivent avant les fonctionnalités. C'est aussi le projet où les tests m'ont le plus servi : les deux défauts du moteur de rotation ne se voyaient pas à l'écran, seulement dans les chiffres d'un test écrit en SQL.