
La base refuse, pas l'écran
Chaque table porte sa crèche, et une règle au niveau de la base filtre les lectures ET les écritures. Une requête sans contexte d'établissement ne renvoie rien — elle ne renvoie pas « tout ». Si le code applicatif oubliait un filtre, la base le rattraperait.
346 tests d'isolation, un par table, rejoués à chaque livraison.
Chacun voit son métier
67 permissions, sept modèles de rôles modifiables. La cuisinière voit les menus et les allergies, jamais un dossier médical. Une éducatrice ne voit que sa section — et là encore, c'est la base qui refuse l'enfant d'une autre section, pas un filtre d'affichage.
Un 404, pas un 403 : un 403 confirmerait que la donnée existe.
Deux mondes séparés
Le personnel de la crèche et les parents n'ont pas le même type de jeton, et aucun des deux ne peut atteindre les routes de l'autre. La console de notre équipe est encore un troisième monde, sur son propre domaine, derrière une double authentification.
Vérifié par une matrice de tests rôle × route, refus compris.
Tout est écrit
Chaque modification d'un enfant, d'une facture ou d'un rôle conserve l'ancienne valeur à côté de la nouvelle, avec qui et quand. Le journal est en ajout seul : on y écrit, on n'y corrige pas.
Y compris nos propres interventions de support.
