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>
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 :
Userreste l'entité existante (côté manager-app).Parentest une nouvelle entité côté mobile, distincte deUser, liée à un ou plusieursChild. Même séparation queMemberdans 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 :
- Présence — présent / absent (si absent, le reste est masqué)
- Arrivée / Départ — heure d'arrivée et heure de départ (time picker, saisie manuelle ou tap "maintenant")
- Humeur — rangée de 5 icônes colorées (très heureux → difficile), un tap
- 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
- Siestes — bouton "+ Ajouter une sieste" → saisie heure début / fin (time picker)
- Affiche les plages ajoutées en chips supprimables
- Changes — compteur +/- avec sélecteur type (Mouillé / Sale / Les deux)
- Note — champ texte libre, optionnel
- Photos — bouton appareil photo + galerie, aperçu des photos ajoutées
- 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 importantsSectionAgenda→ agenda des activités, fermetures exceptionnellesSectionMap→ plan d'accès à la crècheSectionWeather→ 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)