✦ Cahier des charges · MVP · Mai 2026

Cahier des charges mis à jour

Spécifications fonctionnelles et techniques du MVP YATOO. Document de référence Uccello Labs × YATOO, v1.1.

Basé sur CdC v1.0, Avril 2026 Mis à jour, Mai 2026 Confidentiel

1 Contexte du projet

Client YATOO SAS, éditeur qui commercialisera la solution auprès des TPE
Développeur Uccello Labs, conception et développement de la plateforme SaaS
Stade MVP : départ à zéro (aucun client, aucune base installée)
Marché cible TPE commerçants français : restaurateurs (priorité 1), pharmaciens (priorité 2), agents immobiliers (priorité 3)
Objectif MVP Livrable, testable terrain, générateur de revenus. Valider l'usage, le WTP et le churn à M3 sur 5 clients pilotes avant lancement grand public.
Livraison J+14 après signature : environnement staging opérationnel + APK Android

2 Stack technique retenue

Backend Laravel 13 · API REST + WebSocket (Laravel Reverb)
Frontend web React 19 via Inertia.js · interface responsive mobile-first
App panneau Flutter / Dart · Android 9/11, mode kiosque plein écran. Distribution via APK (installation manuelle, sans Play Store).
Base de données PostgreSQL (relationnel) + Redis (WebSocket, cache, files d'attente)
Stockage fichiers S3-compatible (Scaleway Object Storage) : visuels, vidéos, assets branding
IA génération image API Nano Banana : texte → image brandée. Option A : 2 templates fixes. Option B : formulaire adaptatif avec champs auto par template.
Authentification Laravel Sanctum · tokens API + session web
Infrastructure Cloud souverain UE (conformité RGPD) : Scaleway ou OVHcloud

3 Périmètre MVP · 6 modules

Option A inclus dans le périmètre 1 semaine Option A+B inclus dans le périmètre 2 semaines Hors MVP phase 2
M1 Auth multi-tenant Compte par établissement. Login sécurisé (Sanctum). Invitation collaborateur. Gestion des droits (admin / éditeur). Option A
M2 Création de contenu Flux Typeform (une étape à la fois). Types : image, carrousel, vidéo. Upload S3. Templates métiers restaurant (Option A), pharmacie et immo (Option B). Option A+B
M3 Génération IA Option A : intégration Nano Banana avec 2 templates fixes (visuels générés en < 30s). Option B : formulaire adaptatif avec champs automatiques selon le template choisi. Option A+B
M4 Connexion panneau Setup via QR code (auto-configuration). Diffusion WebSocket temps réel (Laravel Reverb). Multi-panneaux jusqu'à 5 en Pro. Fallback offline : dernier contenu reçu affiché. Option A
M5 Dashboard web Interface React responsive mobile-first. Historique des diffusions. Gestion des panneaux. Base multi-tenant prête pour la facturation (Stripe) en phase 2. Option A+B
M6 App Flutter Android Application Android native. Mode kiosque plein écran (Screen Pinning / Device Owner). Connexion backend via API REST. Reconnexion automatique (backoff exponentiel). Distribution APK manuelle. Option A+B

4 Flux de création de contenu

Style Typeform, une question à la fois. Mobile-first. Durée cible : moins de 90 secondes de l'idée à la diffusion.

1

Type de contenu

Image statique · Carrousel d'images · Vidéo

2

Source (si image ou carrousel)

Upload depuis la galerie · Générer par IA (Nano Banana)

3

Template (si génération IA)

Option A : 2 templates fixes disponibles (ex. Plat du jour, Promotion).
Option B : bibliothèque de templates métiers (restaurant, pharmacie, immo) avec sélection par catégorie.

4

Saisie des champs

Option A : champs fixes selon le template (ex. Plat du jour : titre, tarif). Pas de formulaire adaptatif.
Option B : formulaire adaptatif (les champs varient selon le template sélectionné).

5

Prévisualisation

Aperçu du visuel généré avant diffusion. Possibilité de régénérer.

6

Diffusion

Envoi immédiat sur le ou les panneaux sélectionnés. Confirmation visuelle. Historique mis à jour.

Règles métier arrêtées

Vidéo : upload S3 uniquement. Pas de génération IA. Pas de limite de taille ni de durée pour le MVP.
Carrousel : durée d'affichage configurable par image. Durée par défaut appliquée (valeur à définir, ex. 5s). Boucle automatique.
Diffusion : immédiate après validation, pas d'étape de programmation au MVP.

5 Contraintes techniques

Devices Android Android 9 et Android 11. App Flutter légère (RAM/stockage potentiellement limités). Mode kiosque : Screen Pinning ou Device Owner selon version.
Distribution app APK Android : installation manuelle sur les panneaux. Pas de Play Store au MVP. Mise à jour par redistribution APK.
Réseau Fonctionnement hybride obligatoire. Online : webview live via WebSocket. Offline : fallback sur le dernier contenu reçu. Reconnexion automatique avec backoff exponentiel.
CMS natif panneaux Boîte noire à explorer avant développement. L'app Flutter pourra se substituer entièrement au CMS natif. Exploration technique préalable requise.
RGPD Données personnelles stockées et traitées en UE. Consentement explicite pour analytics comportementaux. Logs d'accès conservés 12 mois minimum.
Infrastructure Cloud souverain UE uniquement (Scaleway ou OVHcloud). Uptime cible : 99,5%.
IA Nano Banana Risque de dépendance fournisseur à monitorer. Qualité et latence à valider sur des cas réels (plat du jour, promo pharmacie, bien immobilier) avant promesse commerciale.

6 KPIs de succès

IndicateurCible
Temps de mise à jour (idée → diffusion)< 90 secondes
Délai installation panneau< 5 min sans assistance technique
Génération IA< 30 secondes par visuel
Taux d'adoption hebdomadaire (M1)> 70% des utilisateurs actifs
Taux de churn SaaS (M3)< 10%
Disponibilité plateforme> 99,5% uptime

7 Hors périmètre MVP (phase 2)

Facturation Stripe + portail abonnement
Portail revendeur + gestion réseau partenaires
Compatibilité multi-marques de panneaux
Publication sur le Play Store (iOS ou Android)
Programmation de diffusions (planification horaire)
Analytics comportementaux des clients finaux
Intégrations tierces (Lightspeed, logiciels pharma…)
Multi-établissements avec rôles et délégation

8 Points ouverts · décisions à prendre

⚠️
Périmètre hardware
Panneaux Coworker/YATOO uniquement, ou ouvert à d'autres marques ? Ce choix conditionne l'architecture Flutter et l'adressable marché. Décision requise avant développement.
⚠️
Durée par défaut du carrousel
Valeur à définir : 5 secondes ou 10 secondes par image. À valider avec les premiers utilisateurs pilotes.
⚠️
2 templates fixes IA (Option A)
Quels sont les 2 templates retenus ? Proposition : "Plat du jour" + "Promotion". À confirmer selon les personas pilotes ciblés.
⚠️
Validation Nano Banana
Tester la qualité des visuels générés sur des cas réels avant de valider l'intégration comme feature principale. Accès API (clé) requis côté YATOO.
⚠️
Exploration CMS natif panneaux
Session technique d'exploration requise avant démarrage du sprint. L'app Flutter devra peut-être se substituer entièrement au CMS natif, avec impact sur l'architecture.
⚠️
Objectifs pilotes
Nombre de clients pilotes visés à M3, ARR cible à 12 mois, conditions tarifaires préférentielles pilotes. Non encore définis.
Voir la proposition complète → Réserver un créneau