Dans le cadre de mon cours d’analyse, j'ai développé en solo une application mobile avec l'outil no-code/low-code FlutterFlow. Le sujet était libre, ****j'ai choisi de créer PlantCare, une application de gestion de plantes d'intérieur et d'extérieur.
L'objectif : permettre à un utilisateur de gérer sa collection de plantes, suivre leur entretien (arrosage, rempotage, taille, engrais) et recevoir des recommandations adaptées aux conditions météorologiques locales.
| Technologie | Rôle |
|---|---|
| FlutterFlow (version gratuite) | Développement no-code de l'interface mobile |
| Firebase Auth | Authentification utilisateur |
| Firestore | Base de données NoSQL (collections users, plants, maintenance_history) |
| Firebase Storage | Stockage photos (compression max 1MB avant upload) |
| OpenWeatherMap API | Météo en temps réel pour les recommandations d'arrosage |
| Google Places API | Autocomplétion de villes pour la localisation utilisateur |
| Plant.id API | Identification de plante par photo (limité à 100 req/mois en version gratuite) |
F1 - Authentification complète - Inscription, connexion, déconnexion, réinitialisation de mot de passe, profil modifiable avec photo.
F2 - Gestion de la collection - Ajout manuel (nom, type parmi 10 catégories, photo, localisation intérieur/extérieur/balcon/jardin, date d'acquisition, notes) ou ajout par identification photo via l'API Plant.id. Consultation en grille avec miniatures, statut coloré (OK / Bientôt / En retard), filtres, barre de recherche, modification et suppression.
F3 - Suivi de l'entretien - Pour chaque plante : arrosage (fréquence, quantité, dernier arrosage), rempotage (fréquence, type de terreau), taille/élagage (fréquence saisonnière, notes), fertilisation (fréquence, type d'engrais) et traitement phytosanitaire avec historique.
F4 - Rappels intelligents - Calcul automatique du prochain arrosage basé sur la fréquence définie, le type de plante, la météo, la saison et la localisation (les plantes intérieures ne sont pas impactées par la pluie). Système de snooze et validation des actions.
F5 - Intégration météo - Affichage météo sur l'accueil, adaptation automatique des recommandations : pluie prévue → report pour plantes extérieures, forte chaleur → fréquence augmentée, gel → alerte.
F6 - Journal d'entretien - Timeline chronologique inversée de toutes les actions, filtrable par plante ou par type. Chaque entrée affiche date, plante, type d'action, notes et photo optionnelle. Export PDF ou CSV disponible.
F7 - Configuration - Langue (français, anglais, breton), thème sombre/clair, unités de mesure (L, cL, mL), localisation via Google Places, paramètres de notifications (horaire, avance), gestion des données et suppression de compte.
L'application repose sur 19 custom functions et actions Dart, toutes documentées dans le document de recette. Voici les principales :
Délais d'entretien - getRemainingTimeDry, getRemainingFertilizer, getRemainingPruning et getRemainingRepotting calculent le temps restant ou le retard avant chaque action, en gérant tous les cas : retard de X jours/semaines/mois/ans, à faire aujourd'hui, demain ou dans le futur.
Score de santé dynamique - getContainerIndex analyse jusqu'à 4 tâches d'entretien actives et calcule un score de 0 à 100%, traduit en un index de 1 à 8. Cet index alimente getHealthEmoji (de 🌟 à 💀), getHealthColor (palette de vert #4caf50 à rouge #FF0000) et getMessageHealth (de "Éclatante" à "Urgence vitale !").
Tri et filtrage - getUrgentPlants et getOtherPlants séparent la liste en deux groupes selon l'urgence des actions. filtrerPlantes gère la recherche en temps réel par nom de plante.
Prochaine action prioritaire - getNextAction détermine l'action la plus urgente parmi fertilisation, taille et rempotage et retourne un message lisible. getUrgentActionType retourne le type (fert, tail, remp) pour l'affichage des icônes. getNextActionColorHex adapte la couleur selon l'urgence et le mode sombre/clair.
Dates et âge - getNextDateDay et getNextDateMonths calculent les prochaines dates selon la fréquence. getPlantAge formate l'ancienneté depuis la date d'acquisition.