Skip to content
Closed
Show file tree
Hide file tree
Changes from all commits
Commits
Show all changes
49 commits
Select commit Hold shift + click to select a range
1f246d3
Codebase ok stable
LoloxDev Sep 3, 2025
71cf763
Remove generated files and update gitignore
LoloxDev Sep 3, 2025
3d41607
Merge pull request #30 from Efrei-M2-DEV1/codex/remove-generated-file…
LoloxDev Sep 3, 2025
c6b9db9
feat: Add elegant task management UI components including filter chip…
Farid-Efrei Sep 3, 2025
4aad601
update .gitignore
dktmody Sep 4, 2025
86023ad
feat: Enhance app theme configuration with light and dark modes, incl…
Farid-Efrei Sep 4, 2025
bd98e37
Merge branch 'dev' of https://github.com/LoloxDev/FlutterProject into…
Farid-Efrei Sep 4, 2025
4b8c300
Merge pull request #31 from Efrei-M2-DEV1/devui
Farid-Efrei Sep 4, 2025
70ece4f
ajout options afin d empecher les warnings de bloquer la pipeline
dktmody Sep 4, 2025
071593f
Merge feat/ci-setup into dev
dktmody Sep 4, 2025
f9ab6eb
Update README.md
dktmody Sep 4, 2025
426b2b7
merge dev into staging suite à la mise en place du socle initiale (#33)
dktmody Sep 4, 2025
6dd0f1a
update flutter-ci and readme
dktmody Sep 4, 2025
be25054
merge Feat/ci setup into dev suite à la MAJ de flutter-ci
dktmody Sep 4, 2025
dd004d7
Merge branch 'staging' of https://github.com/LoloxDev/FlutterProject …
dktmody Sep 4, 2025
91700f2
Merge branch 'staging' into dev
dktmody Sep 4, 2025
e1fc407
Add unit, widget and integration tests with CI
LoloxDev Sep 5, 2025
1e7c598
Add sorting UI for tasks
LoloxDev Sep 9, 2025
2d563b7
Merge pull request #38 from Efrei-M2-DEV1/feat/tests
dktmody Nov 4, 2025
9ced385
Merge pull request #42 from Efrei-M2-DEV1/feat15/tri-par-date
dktmody Nov 4, 2025
7379f71
Amélioration de l'authentification : réinitialisation de mot de passe…
LoloxDev Nov 4, 2025
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
861f917
bddtest commit
Farid-Efrei Nov 4, 2025
4c622f9
Refactor TaskService to use a global tasks collection and include own…
Farid-Efrei Nov 4, 2025
b3e97ba
Mise à jour du style du champ de texte personnalisé pour utiliser la …
Farid-Efrei 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
09fc6cb
Merge pull request #44 from Efrei-M2-DEV1/feature/database-integration
dktmody Nov 5, 2025
9a93f7d
Refactor des tests unitaires pour AuthService, TaskProvider et TaskMo…
Farid-Efrei Nov 5, 2025
2731e71
Merge bddtest dans dev: Firebase integration, tests fix, UI améliorat…
Farid-Efrei Nov 5, 2025
8df8226
feat(tasks): ajout de la gestion des utilisateurs assignés aux tâches…
Farid-Efrei Nov 5, 2025
88da508
FEAT: Assignation dans les tâches possibles désormais avec la vue sur…
Farid-Efrei Nov 5, 2025
352dc48
FEAT: Ajout de la gestion des catégories de tâches et amélioration de…
Farid-Efrei Nov 5, 2025
beb8cc6
BUG: Inversion des actions des boutons dans le modal de tâche pour an…
Farid-Efrei Nov 6, 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
57 changes: 57 additions & 0 deletions .github/workflows/flutter-ci.yml
Original file line number Diff line number Diff line change
@@ -0,0 +1,57 @@
name: Flutter CI

on:
pull_request:
branches: [main, staging, dev]
push:
branches: [dev]

jobs:
analyze:
name: Analyze
runs-on: ubuntu-latest
steps:
- uses: actions/checkout@v3
- uses: subosito/flutter-action@v2
with:
flutter-version: "3.35.2"
- run: flutter pub get
- run: flutter analyze --no-fatal-infos --no-fatal-warnings

test:
name: Tests
runs-on: ubuntu-latest
steps:
- uses: actions/checkout@v3
- uses: subosito/flutter-action@v2
with:
flutter-version: "3.35.2"
- name: Install Linux dependencies
run: sudo apt-get update && sudo apt-get install -y clang cmake ninja-build pkg-config libgtk-3-dev
- name: Install Xvfb
run: sudo apt-get install -y xvfb
- run: flutter pub get
- run: |
if [ -d "test" ]; then
flutter test
else
echo "No tests found, skipping..."
fi
- run: |
if [ -d "integration_test" ]; then
xvfb-run -s '-screen 0 1024x768x24' flutter test integration_test -d linux
else
echo "No integration tests found, skipping..."
fi

build:
name: Build
runs-on: ubuntu-latest
steps:
- uses: actions/checkout@v3
- uses: subosito/flutter-action@v2
with:
flutter-version: "3.35.2"
- run: flutter pub get
- run: flutter build apk --debug
- run: flutter build web
7 changes: 7 additions & 0 deletions .gitignore
Original file line number Diff line number Diff line change
Expand Up @@ -43,3 +43,10 @@ app.*.map.json
/android/app/debug
/android/app/profile
/android/app/release

# Generated files
pubspec.lock
.metadata
**/generated_plugin_registrant.*
**/generated_plugins.cmake
**/GeneratedPluginRegistrant.*
45 changes: 0 additions & 45 deletions .metadata

This file was deleted.

155 changes: 155 additions & 0 deletions CREATE_FIRESTORE_INDEXES.md
Original file line number Diff line number Diff line change
@@ -0,0 +1,155 @@
# 🔧 Création des Index Firestore - GUIDE RAPIDE

## ⚠️ Erreur Actuelle

Vous voyez cette erreur dans la console :

```
[cloud_firestore/failed-precondition] The query requires an index.
```

C'est **NORMAL** ! Notre nouveau système de privacy nécessite des index composites.

## ✅ Solution Rapide (2 minutes)

### Étape 1 : Cliquer sur les Liens

Dans votre terminal, vous voyez deux liens qui commencent par :

```
https://console.firebase.google.com/v1/r/project/flutter-todo-web-305fb/...
```

**Action** :

1. Copiez le **premier lien** (celui avec `userId`)
2. Collez-le dans votre navigateur
3. Cliquez sur **"Créer l'index"**
4. Attendez ~2-5 minutes (Firebase crée l'index en arrière-plan)

5. Répétez avec le **second lien** (celui avec `assignedTo`)
6. Cliquez sur **"Créer l'index"**
7. Attendez ~2-5 minutes

### Étape 2 : Vérifier la Création

1. Allez dans **Firebase Console** → **Firestore Database** → **Index**
2. Vous devriez voir 2 nouveaux index :
- `tasks` : `userId (Ascending) + createdAt (Descending)`
- `tasks` : `assignedTo (Array) + createdAt (Descending)`
3. Statut doit passer de **"Building"** à **"Enabled"**

### Étape 3 : Relancer l'App

Une fois les index créés (statut **Enabled**) :

```bash
# Appuyez sur 'R' dans le terminal Flutter pour Hot Restart
# OU relancez complètement
flutter run -d edge
```

## 🎯 Les Deux Index Nécessaires

### Index 1 : Tâches Créées (userId)

```
Collection : tasks
Fields indexed:
- userId (Ascending)
- createdAt (Descending)
- __name__ (Descending)
Query scope: Collection
```

**Pourquoi ?** Pour récupérer rapidement toutes les tâches créées par un utilisateur, triées par date.

### Index 2 : Tâches Assignées (assignedTo)

```
Collection : tasks
Fields indexed:
- assignedTo (Array-contains)
- createdAt (Descending)
- __name__ (Descending)
Query scope: Collection
```

**Pourquoi ?** Pour récupérer rapidement toutes les tâches où l'utilisateur est assigné, triées par date.

## 🚀 Après Création des Index

Une fois les index créés, votre application :

- ✅ Affichera uniquement VOS tâches
- ✅ Affichera les tâches où vous êtes assigné
- ✅ Sera rapide même avec des milliers de tâches
- ✅ Respectera la privacy (règles Firestore)

## 🔍 Vérification que Tout Fonctionne

1. **Connectez-vous** avec votre compte
2. **Créez une tâche** → elle s'affiche immédiatement
3. **Créez un second compte** dans un autre navigateur (mode incognito)
4. **Vérifiez** que les tâches du premier compte ne sont PAS visibles
5. **Retournez au premier compte** → Modifiez une tâche → "Assigner des utilisateurs" → Sélectionnez le second compte
6. **Vérifiez dans le second compte** → La tâche assignée est maintenant visible

## ⏱️ Temps de Création des Index

- **Petite base** (< 100 documents) : ~30 secondes - 2 minutes
- **Base moyenne** (100-1000 documents) : ~2-5 minutes
- **Grande base** (> 1000 documents) : ~5-15 minutes

⚠️ **IMPORTANT** : Ne fermez pas la page pendant la création !

## 🆘 Dépannage

**Erreur persiste après création ?**

- Vérifiez que le statut est **"Enabled"** (pas "Building")
- Faites un **Hot Restart** (R) ou relancez l'app
- Videz le cache du navigateur

**Les index ne se créent pas ?**

- Vérifiez votre quota Firebase (plan gratuit limité)
- Essayez de créer manuellement depuis Console → Firestore → Index

**Je ne vois pas les liens dans la console ?**
Créez manuellement :

1. Firebase Console → Firestore → Index
2. Cliquez sur **"Créer un index composite"**
3. Utilisez les configurations ci-dessus

## 📝 Création Manuelle (Alternative)

Si les liens ne marchent pas, voici les étapes manuelles :

### Index 1 (userId)

1. Console Firebase → Firestore Database → Index
2. Cliquer sur **"Créer un index composite"**
3. Remplir :
- **Collection ID** : `tasks`
- **Champs** :
- `userId` → Ascending
- `createdAt` → Descending
- **Query scope** : Collection
4. Créer

### Index 2 (assignedTo)

1. Cliquer à nouveau sur **"Créer un index composite"**
2. Remplir :
- **Collection ID** : `tasks`
- **Champs** :
- `assignedTo` → Array-contains
- `createdAt` → Descending
- **Query scope** : Collection
3. Créer

---

✅ **Après ces étapes, votre système de privacy et d'assignation sera pleinement opérationnel !**
Loading