DOCS/creche/myinfomate-creche-spec.md
Thomas Fransolet a5a8ecdb20 Documentation interne MyInfoMate / Unov
Import initial de la documentation : statut, roadmap, plans V1/V2,
specs verticales (creche, sport), audits securite, plan de test,
analyse concurrentielle et maquettes de design.

Co-Authored-By: Claude Opus 5 <noreply@anthropic.com>
2026-08-11 11:17:01 +02:00

8.3 KiB

MyInfoMate Crèche — Spécification technique et fonctionnelle

Contexte

MyInfoMate Crèche est une déclinaison (Flutter flavor) de la solution MyInfoMate destinée aux crèches et milieux d'accueil de la petite enfance. Une instance = une crèche.

L'objectif : remplacer les carnets papier, les appels téléphoniques intempestifs et les groupes WhatsApp par une app professionnelle aux couleurs de la crèche.


Nouveaux rôles

Rôle Description
Director Responsable de la crèche — accès complet au manager-app
Educator Puéricultrice/trice — encodage des journaux quotidiens et des activités
Parent Accès lecture seule — journal de son/ses enfant(s) uniquement

Les rôles Director et Educator utilisent le manager-app (web). Les Parent utilisent l'app mobile.

Note : User reste l'entité existante (côté manager-app). Parent est une nouvelle entité côté mobile, distincte de User, liée à un ou plusieurs Child. Même séparation que Member dans la déclinaison Sport.


Nouvelles entités backend

Child

Id, FirstName, LastName, BirthDate, PhotoUrl
GroupId (FK → Group)
InstanceId (FK → Instance)

Group

Id, Name, Color, EducatorId (FK → User, nullable)
InstanceId (FK → Instance)

Exemples : "Les Poussins", "Les Lutins", "Les Papillons"

Parent

Id, FirstName, LastName, Email, PhoneNumber
InstanceId (FK → Instance)

Relation many-to-many Parent ↔ Child (deux parents peuvent avoir le même enfant). Auth par email/password ou magic link email (comme Member dans Sport).

DailyReport

Id, ChildId (FK), Date, EducatorId (FK → User)
Meals: { Morning: string, Noon: string, Afternoon: string }
Naps: [ { Start: DateTime, End: DateTime } ]
Diapers: [ { Time: DateTime, Type: enum (Wet/Dirty/Both) } ]
Mood: enum (Happy, Calm, Tired, Difficult)
Note: string?
Activities: string?

Stocké en JSONB pour Meals, Naps, Diapers (listes variables).

DailyReportPhoto

Id, DailyReportId (FK), ResourceId (FK → Resource), Caption: string?

Announcement

Id, Title, Body, PinnedUntil: DateTime?, TargetGroupId: string? (null = toute la crèche)
AuthorId (FK → User), InstanceId, CreatedAt

App mobile parents

Navigation (bottom bar)

Onglet Contenu
Accueil Annonces épinglées, dernier journal de chaque enfant, météo
Journal Historique des journaux quotidiens de l'enfant sélectionné
Galerie Photos de l'enfant (issues des journaux)
Infos Horaires de la crèche, règlement, contacts, carte

Si un parent a plusieurs enfants : sélecteur d'enfant en haut de l'écran (comme le sélecteur d'équipe dans Sport).

Écran Accueil

  • Carte de bienvenue avec photo et prénom de l'enfant
  • Météo (module existant MyInfoMate)
  • Dernière annonce épinglée de la crèche
  • Résumé du dernier journal : humeur (emoji), repas (oui/non), dernière sieste

Écran Journal — détail d'un jour

  • Humeur (icône colorée)
  • Repas : matin / midi / goûter (texte libre)
  • Siestes : heures de début/fin
  • Changes : nombre et type
  • Note de la puéricultrice
  • Photos du jour

Notifications push

  • Nouveau journal disponible → notification au(x) parent(s) concerné(s)
  • Nouvelle annonce importante → notification à toute la crèche ou groupe ciblé
  • Rappel d'absence à déclarer (optionnel, V2)

Manager-app — adaptations

Onglet "Enfants" (nouveau)

  • Liste des enfants par groupe
  • Fiche enfant : infos, liste des parents associés, historique des journaux
  • Ajout/modification/archivage d'un enfant
  • Invitation des parents par email

Onglet "Groupes" (nouveau)

  • Création et gestion des groupes
  • Assignation des enfants et de l'éducatrice référente

Onglet "Journal quotidien" (nouveau — Educator + Director)

Vue liste — point d'entrée

  • Date en haut (flèches gauche/droite pour naviguer, défaut : aujourd'hui)
  • Filtre par groupe (si l'éducatrice a plusieurs groupes)
  • Liste des enfants du groupe : photo + prénom + badge statut (À compléter / Complété / Absent)
  • Tap sur un enfant → ouvre le panneau d'encodage (pas une nouvelle page — drawer ou bottom sheet pour rester dans le flux)

Panneau d'encodage rapide (par enfant)

Tout inline, dans l'ordre naturel de la journée :

  1. Présence — présent / absent (si absent, le reste est masqué)
  2. Arrivée / Départ — heure d'arrivée et heure de départ (time picker, saisie manuelle ou tap "maintenant")
  3. Humeur — rangée de 5 icônes colorées (très heureux → difficile), un tap
  4. Repas
    • 3 lignes : Matin / Midi / Goûter
    • Chips prédéfinis par ligne : "Bien mangé" / "Peu mangé" / "Refusé" + champ texte optionnel pour le détail
  5. Siestes — bouton "+ Ajouter une sieste" → saisie heure début / fin (time picker)
    • Affiche les plages ajoutées en chips supprimables
  6. Changes — compteur +/- avec sélecteur type (Mouillé / Sale / Les deux)
  7. Note — champ texte libre, optionnel
  8. Photos — bouton appareil photo + galerie, aperçu des photos ajoutées
  9. Bouton "Envoyer" en bas, sticky — notifie les parents immédiatement

Principes UX à respecter

  • Zéro navigation entre les enfants : fermer le panneau → retour liste → tap suivant
  • Encodage minimum viable (humeur + présence) = 2 taps, 10 secondes
  • Encodage complet = ~30 secondes par enfant
  • L'éducatrice peut encoder en plusieurs fois dans la journée (sieste le matin, repas à midi, note en fin de journée) — les données sont sauvegardées à chaque modification
  • "Envoyer" déclenche la notification push aux parents — distinct de la sauvegarde automatique

Onglet "Annonces" (nouveau)

  • Création d'annonces (titre, corps, date d'expiration, groupe cible)
  • Historique des annonces envoyées

Sections de contenu existantes réutilisées

Les sections suivantes de MyInfoMate sont directement utiles sans adaptation :

  • SectionArticle → règlement intérieur, documents importants
  • SectionAgenda → agenda des activités, fermetures exceptionnelles
  • SectionMap → plan d'accès à la crèche
  • SectionWeather → météo sur la page d'accueil

Stratégie code commun

Composant Réutilisation
Backend manager-service Identique — nouvelles entités ajoutées, aucune entité modifiée
Instance Identique — une crèche = une instance
Sections de contenu Identiques — toutes réutilisables
Push notifications Identiques — même service FCM
Auth JWT + API Key Identiques
manager-app Code commun + nouveaux onglets conditionnels selon le InstanceType
App mobile Nouveau flavor Flutter myinfomate_creche — UI spécifique, même client API

InstanceType (à ajouter sur Instance)

public enum InstanceType { Generic, Sport, Creche }
public InstanceType Type { get; set; } = InstanceType.Generic;

Le manager-app affiche les onglets conditionnellement selon ce type. Pas de duplication de code.


V1 — Périmètre de lancement

  • Journal quotidien complet (repas, siestes, changes, humeur, note, photos)
  • Annonces crèche/groupe
  • App mobile parents avec notifications
  • Gestion des enfants, groupes, parents dans manager-app
  • Sections de contenu (règlement, carte, agenda)

V2 — Évolutions

  • Déclaration d'absences — parent déclare l'absence de son enfant dans l'app
  • Galerie partagée — album photos du groupe (pas nominatif, sur opt-in)
  • Signature électronique — entrée/sortie de l'enfant (RGPD)
  • Carnet de santé — vaccins, poids, taille (données sensibles, chiffrement renforcé)
  • Facturation — export des présences pour calcul de la facturation (format ONE/Kind & Gezin)

Pricing suggéré

  • Pilote : gratuit 3 mois
  • Standard : 40-50€/mois par crèche
  • Pas de quota IA ni de module arbitrage → coût infra plus faible
  • White-label (Flutter flavor aux couleurs de la crèche) : option sur demande, pas inclus par défaut

Points RGPD à anticiper

  • Données de mineurs → consentement parental obligatoire
  • Photos des enfants → opt-in par parent, pas de partage entre familles par défaut
  • Durée de conservation → supprimer les données à la fin du contrat d'accueil
  • Hébergement en UE obligatoire (déjà le cas : VPS OVH Belgique)