Fintello permet actuellement de gérer les finances d'un foyer (Family), mais un seul utilisateur peut y accéder. Dans la réalité, un foyer est souvent composé de plusieurs personnes (couple, colocation, famille) qui souhaitent gérer leurs finances ensemble tout en conservant une certaine autonomie.
"Je veux inviter mon/ma conjoint(e) à rejoindre notre foyer Fintello pour qu'on puisse tous les deux suivre nos finances communes, tout en gardant certaines dépenses privées"
Objectif : Définir le périmètre, les sous-issues à créer, et les décisions d'architecture à prendre AVANT de développer.
Cette feature est structurante et impacte :
- Le modèle de données (Family, User, permissions)
- La sécurité et la privacy
- L'UX globale de l'application
- Potentiellement le modèle économique (pricing par foyer vs par utilisateur)
Quand un utilisateur B rejoint le foyer de A, que fait-on de ses données existantes ?
| Option | Description | Avantages | Inconvénients |
|---|---|---|---|
| Fusion complète | Tous les comptes/transactions de B migrent vers le foyer A | Simple, tout est partagé | Pas de retour arrière, perte d'autonomie |
| Import sélectif | B choisit quels comptes importer dans le foyer | Flexibilité | Complexité UX, données dupliquées ? |
| Comptes liés | B garde son foyer mais peut voir/contribuer au foyer A | Autonomie préservée | 2 foyers à gérer, confusion |
| Fusion + comptes privés | Tout migre mais certains comptes sont marqués "privés" | Bon compromis | Complexité modèle de données |
Recommandation : Option 4 (Fusion + comptes privés)
Quelles données peuvent être privées ?
| Donnée | Partageable ? | Privé possible ? |
|---|---|---|
| Comptes bancaires | ✅ Oui | ✅ Oui (compte perso) |
| Transactions | ✅ Oui | ✅ Oui (si compte privé) |
| Budgets | ✅ Oui | ❓ À définir |
| Abonnements | ✅ Oui | ❓ À définir |
| Catégories | ✅ Partagées | ❌ Non (communes au foyer) |
| Objectifs d'épargne | ✅ Oui | ✅ Oui (objectif perso) |
| Rôle | Permissions |
|---|---|
| Propriétaire | Tout (inviter, exclure, supprimer foyer) |
| Membre | CRUD sur données partagées, voir ses données privées |
| Lecture seule | Consulter uniquement (pour un enfant, un comptable ?) |
┌─────────────┐ Invitation ┌─────────────┐
│ User A │ ──────────────▶ │ User B │
│ (proprio) │ │ (invité) │
└─────────────┘ └─────────────┘
│
┌──────────────────┼──────────────────┐
▼ ▼ ▼
[Accepter] [Refuser] [Ignorer]
│
▼
┌─────────────────────┐
│ Choix des données │
│ à importer/garder │
│ privées │
└─────────────────────┘
│
▼
┌─────────────────────┐
│ Fusion effectuée │
│ B rejoint foyer A │
└─────────────────────┘
Que se passe-t-il si B quitte le foyer ?
- Ses comptes privés repartent avec lui
- Les comptes partagés restent dans le foyer
- Les transactions qu'il a créées sur comptes partagés restent
- Option : exporter ses données avant de partir
- DEF-XX : Ajouter le concept de "compte privé" (visible uniquement par son propriétaire)
- DEF-XX : Ajouter le champ
ownerIdsur les entités (qui a créé quoi) - DEF-XX : Implémenter les rôles Propriétaire/Membre sur Family
- DEF-XX : Créer le système d'invitation par email
- DEF-XX : Page d'acceptation d'invitation avec choix des données
- DEF-XX : Migration des données de l'invité vers le nouveau foyer
- DEF-XX : Filtrer les données privées dans toutes les requêtes API
- DEF-XX : UI pour marquer un compte comme privé
- DEF-XX : Indicateur visuel "Privé" dans l'interface
- DEF-XX : Page "Gérer le foyer" (voir membres, rôles)
- DEF-XX : Exclure un membre du foyer
- DEF-XX : Quitter un foyer (avec export de données)
-
RLS Supabase : Les policies doivent être revues pour gérer :
- Données du foyer (tous les membres)
- Données privées (owner uniquement)
-
Invitation sécurisée : Token unique, expiration, validation email
-
Audit trail : Qui a modifié quoi ? (important en cas de litige)
| Modèle actuel | Modèle possible |
|---|---|
| 1 user = 1 abo | 1 foyer = 1 abo (jusqu'à X membres) |
| ou : membre supplémentaire = +Y€/mois |
| Phase | Complexité | Estimation |
|---|---|---|
| Phase 1 : Fondations | Haute | 20-30h |
| Phase 2 : Invitation | Moyenne | 15-20h |
| Phase 3 : Privacy | Haute | 15-25h |
| Phase 4 : Gestion | Moyenne | 10-15h |
| TOTAL | 60-90h |
- Valider les choix d'architecture (fusion + comptes privés ?)
- Définir le MVP (quelles phases sont indispensables ?)
- Créer les sous-issues avec specs détaillées
- Prototyper l'UX (maquettes invitation, gestion foyer)
- Décisions d'architecture documentées et validées
- Sous-issues créées avec périmètre clair
- Maquettes UX des parcours critiques
- Impact sur le modèle de données identifié
- Estimation affinée après découpage