Organisation technique et architecturale du projet Agroneo, articulé autour de deux composantes : le backend Java et le frontend Flutter multiplateforme.
Backend Java : Un moteur sur-mesure avec Jakarta EE et MongoDB
Contrairement aux architectures classiques basées sur des frameworks volumineux (Spring Boot, Quarkus), le backend repose directement sur les standards Jakarta EE (Servlet 6.1 et WebSockets 2.2) avec une exécution sous Tomcat et Java 21.
Le projet est structuré en plusieurs modules Maven :
- HubD (v4.0.0) : Le moteur technique transverse (JAR).
- Modèle de données universel : Utilisation d’une classe
Jsoncentrale implémentant à la foisMap<String, Object>etorg.bson.conversions.Bson. Elle unifie le stockage en base, les requêtes/réponses HTTP et les payloads WebSockets. - Couche MongoDB fluide : Utilisation du pilote officiel
mongodb-driver-sync(v5.13) sans ORM lourd. La classeDb.javaexpose des helpers d’agrégation (Pipeline,Aggregator), de pagination (Paginer) et de création automatisée d’index (IndexBuilder). - Temps réel par Capped Collection : Implémentation d’un bus pub/sub interne via une collection plafonnée MongoDB (
Pusher) lue en continu par un tailable cursor et redistribuée vers les WebSockets clients. - Gestionnaire de fichiers : Stockage binaire par découpage en blocs (
BlobFiles,BlobChunks,BlobCache) avec redimensionnement d’images et cache. - Sécurité & Protocoles : Serveur OAuth2 (implémentation Oltu), gestion des sessions par cookies sécurisés, protection anti-flood et anti-bruteforce, et passerelle IA/MCP (Model Context Protocol).
- Modèle de données universel : Utilisation d’une classe
- Agroneo (v3.0) : La couche métier applicative (WAR déployé en
ROOT).- Gestion permacole « Gaia » : Modélisation hiérarchique en arbre : Zones -> Cultures -> Événements.
- Géolocalisation & SIG : Intégration d’index spatiaux MongoDB (
2dsphere) et calculs GeoJSON. - Facturation multi-plateformes : Gestion des paiements et abonnements via Stripe, Google Play Developer API et Apple App Store Server API.
- Assistant contextuel « Gaia AI » : Outils de suggestions agronomiques et discussions enrichies par LLM.
Frontend Flutter : Multiplateforme et synchronisation
Le frontend (Dart 3.10+) est conçu sous la forme de modules Flutter découplés, ciblant le Web, le mobile (iOS, Android) et le bureau (macOS, Linux, Windows) :
- hubd (package transversal) :
- Classe miroir
Jsonen Dart pour sérialiser et manipuler directement les flux serveur. - Client HTTP (
Api) avec support natif du cache (ApiCache), requêtes isolées et gestion fine de l’état réseau. - Connexion WebSocket unifiée (
MasterSocket) avec reconnexion automatique. - Gestionnaire de synchronisation et de persistance hors-ligne (
Store/Stores). - Bibliothèque de composants d’interface, sélecteurs et authentification OAuth/Google.
- Classe miroir
- agroneo (application principale) :
- Interface utilisateur de « Growing Gaia » : cartographie dynamique (
flutter_map,geodesy), calendrier cultural, suivi météo/lunaire. - Intégration de l’assistant de culture assisté par IA (
ai_discuss,ai_suggest). - Achats in-app multi-stores (
in_app_purchase).
- Interface utilisateur de « Growing Gaia » : cartographie dynamique (

