Application mobile du module Monitoring de GeoNature, pour la saisie de données de protocoles de suivi sur smartphone.
Monitoring-mobile est une application mobile du module Monitoring de GeoNature. Elle permet la saisie de données de protocoles de suivi directement depuis un smartphone et leur envoi vers votre instance GeoNature.
- Saisie terrain : interface optimisée pour smartphone
- Synchronisation : envoi automatique des données vers GeoNature
- Mode hors ligne : saisie sans connexion, synchronisation ultérieure
- Protocoles multiples : support des protocoles configurés dans GeoNature
- Formulaires dynamiques : adaptation automatique selon le protocole
| Version app mobile | GeoNature core | Monitoring serveur (min) | Code de version (à saisir côté admin GeoNature) |
|---|---|---|---|
v1.1.1-geonature-2.17 |
2.17.x | ≥ 1.2.6 | 3 |
v1.1.0-geonature-2.17 |
2.17.x | ≥ 1.2.6 | 2 |
v1.0.0-geonature-2.17 |
2.17.x | 1.2.6 | 1 |
Le code de version est la valeur à renseigner côté admin GeoNature (voir Déploiement). Pour l'historique complet des releases, voir docs/VERSIONS.md.
L'application vérifie automatiquement la version du module Monitoring sur le serveur GeoNature avant chaque téléchargement de module. Si la version est inférieure à la version minimale requise, le téléchargement est bloqué avec un message explicatif.
Chaque ligne majeure GeoNature a sa propre branche de support : support/geonature-2.17 et support/geonature-2.16 pour les hotfixes. Le développement courant sur develop cible la prochaine compat.
- Android 5.0 minimum
- GeoNature 2.16.x ou 2.17.x avec le module Monitoring correspondant (voir matrice ci-dessus)
- Compte utilisateur avec droits sur les modules
Téléchargez la dernière version APK depuis les Releases.
# Cloner le repository
git clone https://github.com/RNF-SI/gn_mobile_monitoring/
cd gn_mobile_monitoring
# Installer les dépendances
flutter pub get
# Générer le code
flutter pub run build_runner build --delete-conflicting-outputs
# Lancer l'application
flutter run- Lancer l'application
- Saisir l'URL de votre instance GeoNature
- Se connecter avec ses identifiants GeoNature
- Télécharger les modules de Monitoring souhaités
L'application utilise Flutter 3.38.4 (Dart 3.10.3) et suit une architecture Clean Architecture. Voir CURSORRULES.md pour les conventions de code.
- Vue d'ensemble des fonctionnalités — types de widgets, compatibilité des modules et limitations
- Expressions JavaScript supportées — documentation technique des expressions JS
- Tâches
- Snippets
- .cursorrules
- Fichiers de Prompts
make test # Exécute les tests unitaires
make test-unit # Alias pour les tests unitairesLes tests d'intégration vérifient l'interaction avec les API réelles de GeoNature.
- Copier le fichier de configuration :
cp .env.test.example .env.test - Configurer avec des identifiants réels (déjà configuré pour POPAmphibien/POPReptile)
make test-integration # Tests d'intégration avec vraies requêtes HTTP
make test-integration-manual # Validation rapide de la configurationPour plus de détails, voir la documentation des tests d'intégration.
Tests qui pilotent l'app sur un téléphone Android contre une vraie API GeoNature (login, navigation module, CRUD sites/visites/observations).
./run_real_e2e_tests.sh --device=<id> auth # auth | module | sites | visits | observations | allVoir la documentation des tests E2E réels pour la configuration, la procédure après reboot et le troubleshooting.
Le projet utilise GitHub Actions pour l'intégration continue :
- Tests unitaires sur chaque push
- Tests d'intégration sur les pull requests vers
developetmain - Analyse statique du code avec
flutter analyze
Voir .github/workflows/integration_tests.yml pour la configuration.
- Compiler l'APK :
flutter build apk --release - Créer une release sur GitHub avec l'APK en pièce jointe
Pour que les utilisateurs soient notifiés des mises à jour, l'administrateur du serveur GeoNature doit :
-
Créer le dossier et le fichier de configuration :
mkdir -p <GEONATURE>/backend/media/mobile/monitoring/ echo '{}' > <GEONATURE>/backend/media/mobile/monitoring/settings.json
-
Déposer l'APK (téléchargé depuis les releases GitHub) :
cp monitoring-v<X.Y.Z>-geonature-<M.m>.apk <GEONATURE>/backend/media/mobile/monitoring/monitoring.apk
⚠️ Le nom du fichier sur le serveur doit correspondre EXACTEMENT au champ « Chemin relatif » de l'admin (étape 3). L'app construit l'URL de téléchargement directement à partir de ce chemin — un nom différent → 404 → la mise à jour reste bloquée en chargement chez l'utilisateur.La convention est de renommer en
monitoring.apk(URL stable d'une release à l'autre, le chemin admin ne change jamais — seul le Code de version est à incrémenter à chaque release). -
Enregistrer l'application dans l'admin GeoNature :
- Aller dans Administration > Autres > Applications mobiles
- Créer une entrée avec :
Champ Valeur Code application MONITORINGChemin relatif de l'APK monitoring/monitoring.apkNom du paquet fr.geonature.monitoringCode de version Valeur publiée avec chaque release — voir le tableau Compatibilité des versions ou docs/VERSIONS.md. Pour la releasev1.1.1, c'est3.⚠️ Code de version : ne pas confondre avec le nom de version (1.0.0). C'est un entier strictement croissant, fixé à la compilation (buildNumber depubspec.yaml), que l'admin doit saisir tel quel. L'app ne propose une mise à jour que si la valeur admin est strictement supérieure à celle de l'APK installé. -
Mettre à jour : lors d'une nouvelle version, remplacer le fichier
monitoring.apksur le serveur (en renommant le nouvel APK téléchargé) et incrémenter le Code de version dans l'admin. Le chemin relatif reste inchangé.
L'application vérifie automatiquement au lancement et après chaque synchronisation si une mise à jour est disponible.
Les contributions sont bienvenues ! N'hésitez pas à ouvrir une issue ou proposer une PR.
Pour tout problème ou question, ouvrir une issue sur ce repository.