Skip to content
Merged
Show file tree
Hide file tree
Changes from all commits
Commits
Show all changes
18 commits
Select commit Hold shift + click to select a range
c43d8fd
feat(database): ajout des dépendances Drift et SQLite
dktmody Nov 4, 2025
138966b
refactor(database): retour à Firebase, suppression des dépendances SQ…
dktmody Nov 4, 2025
108171d
feat(database): création du service Firestore pour les tâches
dktmody Nov 4, 2025
c1bfb7e
feat(database): création du repository des tâches
dktmody Nov 4, 2025
730f0e1
feat(database): intégration Firestore dans TaskProvider avec écoute t…
dktmody Nov 4, 2025
33ca43e
feat(database): initialisation de Firebase au démarrage de l'app
dktmody Nov 4, 2025
0a61a7c
docs(database): ajout de la documentation complète Firebase dans le R…
dktmody Nov 4, 2025
d40a2c5
config(firebase): ajout du fichier firebase_options.dart (template à …
dktmody Nov 4, 2025
1910f7c
docs(firebase): ajout du guide de configuration Firebase pour eric.am…
dktmody Nov 4, 2025
a14ecc6
fix(splash): ajout du check mounted pour éviter l'erreur BuildContext…
dktmody Nov 4, 2025
bf73d5b
docs(firebase): ajout du guide de démarrage rapide (récapitulatif com…
dktmody Nov 4, 2025
9521543
config(firebase): configuration complète avec les clés du projet flut…
dktmody Nov 4, 2025
7168077
feat(auth): intégration complète de Firebase Authentication
dktmody Nov 4, 2025
6c701cf
docs(test): ajout du guide de test et widget de diagnostic Firestore
dktmody Nov 4, 2025
f1252a5
debug(firestore): ajout page de diagnostic et guide de débogage
dktmody Nov 4, 2025
29a4683
fix(auth): suppression de la méthode resetPassword dupliquée
dktmody Nov 4, 2025
0e42507
test(all): correction des tests pour fonctionner sans Firebase initia…
dktmody Nov 5, 2025
fa5af05
fix(tests): correction du test d'intégration pour compatibilité Firebase
dktmody Nov 5, 2025
File filter

Filter by extension

Filter by extension

Conversations
Failed to load comments.
Loading
Jump to
Jump to file
Failed to load files.
Loading
Diff view
Diff view
141 changes: 141 additions & 0 deletions FIREBASE_SETUP.md
Original file line number Diff line number Diff line change
@@ -0,0 +1,141 @@
# 🔥 Configuration Firebase - Guide étape par étape

## 📧 Compte Firebase
Email : eric.amour2022@gmail.com

---

## 🚀 Étapes de configuration

### 1️⃣ Créer/Accéder au projet Firebase

1. Aller sur [Firebase Console](https://console.firebase.google.com/)
2. Se connecter avec : **eric.amour2022@gmail.com**
3. Cliquer sur **"Ajouter un projet"** ou sélectionner un projet existant
4. Nom du projet suggéré : **flutter-todolist-app** (ou votre choix)

---

### 2️⃣ Configurer la plateforme Web

1. Dans la console Firebase, cliquer sur **⚙️ Paramètres du projet**
2. Descendre jusqu'à **"Vos applications"**
3. Cliquer sur l'icône **</> Web**
4. Enregistrer l'app :
- Nom : **FlutterProject Web**
- ✅ Cocher : "Configurer également Firebase Hosting"
5. Copier les valeurs affichées :

```javascript
const firebaseConfig = {
apiKey: "VOTRE_API_KEY",
authDomain: "VOTRE_PROJECT_ID.firebaseapp.com",
projectId: "VOTRE_PROJECT_ID",
storageBucket: "VOTRE_PROJECT_ID.appspot.com",
messagingSenderId: "VOTRE_SENDER_ID",
appId: "VOTRE_APP_ID"
};
```

---

### 3️⃣ Activer Firestore Database

1. Dans le menu latéral, cliquer sur **"Firestore Database"**
2. Cliquer sur **"Créer une base de données"**
3. Choisir le mode : **Mode test** (pour le développement)
4. Sélectionner la région : **europe-west1** (Belgique) ou **us-central1**
5. Cliquer sur **"Activer"**

---

### 4️⃣ Configurer les règles Firestore

Dans **Firestore Database → Règles**, remplacer par :

```javascript
rules_version = '2';
service cloud.firestore {
match /databases/{database}/documents {
// Collection des tâches - accès public en mode développement
match /tasks/{taskId} {
allow read, write: if true;
}
}
}
```

⚠️ **Important** : Ces règles sont ouvertes pour le développement.
En production, sécuriser avec l'authentification.

Cliquer sur **"Publier"**.

---

### 5️⃣ Mettre à jour firebase_options.dart

Remplacer les valeurs dans `lib/firebase_options.dart` :

```dart
static const FirebaseOptions web = FirebaseOptions(
apiKey: 'VOTRE_API_KEY',
appId: 'VOTRE_APP_ID',
messagingSenderId: 'VOTRE_SENDER_ID',
projectId: 'VOTRE_PROJECT_ID',
authDomain: 'VOTRE_PROJECT_ID.firebaseapp.com',
storageBucket: 'VOTRE_PROJECT_ID.appspot.com',
);
```

---

### 6️⃣ Tester l'application

```bash
flutter pub get
flutter run -d web-server --web-hostname 127.0.0.1 --web-port 8081
```

Vérifier dans la console :
```
✅ Firebase initialisé avec succès
```

---

### 7️⃣ Vérifier Firestore

1. Retourner dans Firebase Console → Firestore Database
2. Vous devriez voir une collection **"tasks"** se créer automatiquement
3. Les tâches créées dans l'app apparaîtront ici en temps réel

---

## 📝 Commandes utiles

```bash
# Reconfigurer Firebase automatiquement (si FlutterFire CLI configuré)
flutterfire configure

# Voir les logs Firebase
flutter run -d web-server --web-hostname 127.0.0.1 --web-port 8081 -v

# Nettoyer et relancer
flutter clean
flutter pub get
flutter run -d web-server --web-hostname 127.0.0.1 --web-port 8081
```

---

## 🆘 Aide

Si vous rencontrez des problèmes :
1. Vérifier que toutes les clés sont correctement copiées
2. Vérifier que Firestore est activé
3. Vérifier les règles de sécurité Firestore
4. Regarder la console du navigateur (F12) pour les erreurs

---

✅ Une fois configuré, l'application sera connectée à Firebase et les tâches seront synchronisées en temps réel !
156 changes: 156 additions & 0 deletions FIRESTORE_DEBUG.md
Original file line number Diff line number Diff line change
@@ -0,0 +1,156 @@
# 🔧 Guide de débogage Firestore

## Problème actuel
Les tâches ne sont pas créées dans la console Firebase malgré une connexion réussie.

## ✅ Checklist de diagnostic

### 1. Vérifier l'authentification Firebase
- [ ] Ouvrir l'application : http://127.0.0.1:8082
- [ ] Se connecter avec : eric.amour2022@gmail.com
- [ ] Vérifier dans la console : https://console.firebase.google.com/project/flutter-todo-web-305fb/authentication/users

### 2. Vérifier les règles Firestore
- [ ] Ouvrir : https://console.firebase.google.com/project/flutter-todo-web-305fb/firestore/rules
- [ ] Vérifier que les règles permettent l'écriture

**Règles recommandées pour le développement :**
```javascript
rules_version = '2';
service cloud.firestore {
match /databases/{database}/documents {
// Règles pour la collection tasks
match /tasks/{taskId} {
// Autoriser lecture/écriture uniquement pour utilisateurs authentifiés
allow read, write: if request.auth != null;
}
}
}
```

**Règles pour le test (TEMPORAIRE UNIQUEMENT) :**
```javascript
rules_version = '2';
service cloud.firestore {
match /databases/{database}/documents {
match /tasks/{taskId} {
// ⚠️ ATTENTION : Règles ouvertes pour TEST uniquement !
allow read, write: if true;
}
}
}
```

### 3. Utiliser la page de debug
- [ ] Dans l'application, cliquer sur l'icône 🐛 en haut à droite
- [ ] Cliquer sur "Test écriture" pour créer une tâche de test
- [ ] Observer les logs pour identifier l'erreur exacte

### 4. Vérifier la console navigateur
- [ ] Ouvrir les DevTools du navigateur (F12)
- [ ] Aller dans l'onglet "Console"
- [ ] Essayer de créer une tâche
- [ ] Noter les erreurs affichées

## 🔍 Erreurs courantes

### Erreur : "Missing or insufficient permissions"
**Cause :** Les règles Firestore bloquent l'écriture

**Solution :**
1. Aller dans https://console.firebase.google.com/project/flutter-todo-web-305fb/firestore/rules
2. Mettre à jour les règles (voir ci-dessus)
3. Cliquer sur **"Publier"** (en haut à droite)
4. Attendre 1-2 minutes pour que les règles se propagent
5. Réessayer

### Erreur : "No user signed in"
**Cause :** Utilisateur non connecté

**Solution :**
1. Se déconnecter de l'application
2. Se reconnecter avec eric.amour2022@gmail.com
3. Réessayer de créer une tâche

### Collection "tasks" n'apparaît pas
**Cause :** La collection n'est créée qu'après la première écriture réussie

**Solution :**
1. Vérifier que les règles Firestore sont correctes
2. Créer une première tâche avec succès
3. Rafraîchir la console Firebase : https://console.firebase.google.com/project/flutter-todo-web-305fb/firestore/data

## 📊 Vérification des données

### Voir les données dans Firestore
1. Ouvrir : https://console.firebase.google.com/project/flutter-todo-web-305fb/firestore/data
2. Chercher la collection "tasks"
3. Si elle existe, vérifier les documents à l'intérieur

### Structure attendue d'un document task
```json
{
"title": "Ma tâche",
"description": "Description de la tâche",
"isCompleted": false,
"priority": 2,
"createdAt": "Timestamp",
"dueDate": null,
"tags": []
}
```

## 🛠️ Actions de dépannage

### Si les règles sont correctes mais ça ne fonctionne toujours pas

1. **Vérifier la connexion Firebase dans la console navigateur :**
```javascript
// Dans la console navigateur (F12)
firebase.apps.length // Doit retourner 1 ou plus
```

2. **Tester manuellement dans la console navigateur :**
```javascript
// Dans la console navigateur (F12)
firebase.firestore().collection('tasks').add({
title: 'Test manuel',
description: 'Test depuis console',
isCompleted: false,
priority: 2,
createdAt: firebase.firestore.Timestamp.now(),
tags: []
}).then(doc => console.log('Créé:', doc.id))
```

3. **Vérifier les quotas Firebase :**
- Ouvrir : https://console.firebase.google.com/project/flutter-todo-web-305fb/usage
- Vérifier que vous n'avez pas atteint les limites

## 📝 Logs utiles

Pour voir les logs détaillés dans l'application :
1. Aller sur la page de debug (icône 🐛)
2. Les logs apparaîtront avec des codes couleur :
- 🟢 Vert : Succès
- 🔴 Rouge : Erreur
- 🟠 Orange : Avertissement
- 🔵 Cyan : Information

## 🎯 Prochaines étapes

Une fois que le test d'écriture fonctionne dans la page de debug :

1. ✅ La collection "tasks" devrait apparaître dans Firebase
2. Retourner à la page des tâches
3. Essayer de créer une tâche normale
4. Vérifier qu'elle apparaît dans la liste ET dans Firebase

## 📞 Besoin d'aide ?

Si après toutes ces vérifications ça ne fonctionne toujours pas :

1. Copier les logs de la page de debug
2. Copier les erreurs de la console navigateur (F12)
3. Vérifier une dernière fois les règles Firestore
4. Partager ces informations pour un diagnostic plus approfondi
Loading