Agroneo App Specs

le par Laurent PAGE

Agroneo App Specs
Agroneo repose sur une architecture full-stack réactive et sur-mesure, articulée autour du socle technique HubD et d’une application permacole multiplateforme ; associant Jakarta EE, MongoDB en temps réel et un front-end Flutter multiplateforme.
Agroneo App Specs

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 Json centrale implémentant à la fois Map<String, Object> et org.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 classe Db.java expose 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).
  • 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 Json en 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.
  • 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).