URL: https://linuxfr.org/news/gestion-de-jardin-garden-party Title: Gestion de jardin : Garden party Authors: mtancoigne Ysabeau et Pierre Jarillon Date: 2020-12-23T01:28:38+01:00 License: CC By-SA Tags: jardin, vuejs et openlayers Score: 5 Cette dépêche concerne Garden Party, une application web opensource de gestion de jardin. ## Contexte Lassés de la ville et de ses sirènes, nous avons cette année cherché à nous en éloigner. Après plusieurs visites et quelques concessions, nous avons trouvé quelque chose dans nos moyens. Environ 1 700m² de terrain contenant déjà quelques arbres, où nous allons nous mettre à jardiner. L’objectif est encore flou, mais il est question de résilience. Et pour apprendre, j’aime faire. En attendant la vente, nous avons commencé à réfléchir à notre futur jardin : quoi planter et où ? ---- [Instance active](https://garden-party.experimentslabs.com/) [Sources](https://gitlab.com/experimentslabs/garden-party) [Manuel utilisateur](https://doc.garden-party.experimentslabs.com/) [Chat Matrix](https://matrix.to/#/!fROsPDUgtYILajhMWg:matrix.org) [Liste de diffusion](https://framalistes.org/sympa/subscribe/garden-party) [Blog](https://blog.garden-party.experimentslabs.com/) ---- La carte du jardin ------------------ Nous avons donc commencé à dessiner notre jardin, d’abord à partir de calques réalisés sur des vues aériennes, puis en utilisant [Inkscape](https://www.inkscape.org). En quelques heures, nous sommes arrivés cette carte-ci : ![Terrain vide](https://blog.garden-party.experimentslabs.com/assets/images/20201216_carte_vide.svg) Puis nous l'avons peuplée : ![Terrain complet](https://blog.garden-party.experimentslabs.com/assets/images/20201216_carte_arbres.svg) En gros, nous avons remis les arbres et arbustes, colorés par genre, la taille représentant grosso-modo leur âge. Les points représentent les zones qui d’après nous seront principalement ombragées. Et la carte a évolué, avec différents essais, pour arriver, à son apogée, à un ensemble totalement surréaliste et ingérable pour des débutants : ![Terrain, licornes](https://blog.garden-party.experimentslabs.com/assets/images/20201216_carte_parcelles.svg) Il faut gérer tout ça… ## Naissance de Garden Party En attendant la vente, nous trépignons. Les quelques travaux concernant la maison sont chiffrés, reste l’inconnue : le jardin. La carte est jolie mais ne permet pas de suivi, car… c’est une carte. Donc l’idée germe, au fil de nuits à me demander par où commencer, comment garder une trace de ce qui sera fait, de créer une application. Son but sera simple pour commencer : pouvoir recréer la carte que nous avions imaginée et assurer un suivi de la vie de ces éléments, tout en planifiant les actions à mener, plant, taille, récolte… Le confinement de novembre lié à la COVID19 a donné un peu de temps pour développer une application qui répond à ce cahier des charges. C’est donc avec un code opensource (licence MIT), que Garden Party voit le jour. ![Interface principale](https://blog.garden-party.experimentslabs.com/generated/assets/images/20201216_gp_interface-1000-32329000a.png) ## Maturation et publication Au cours des quelques semaines de développement initial, il a été proposé de pouvoir utiliser les cartes OpenStreetMap directement en fond de plan, en plus des images téléversées et c’est maintenant possible. ![Carte OSM](https://blog.garden-party.experimentslabs.com/generated/assets/images/20201216_gp_osm-1000-05f3429f3.png) De plus, il a fallu créer une bibliothèque de plantes, ce qui a mené à ces différents points : - le _genre_ des plantes ? (la _famille_ aurait peut-être été plus pertinente, à discuter…) ; - les relations avec d’autres plantes ? (les tomates ont une bonne relation avec les œillets d’inde) ; - une description ? (OK, on les a pompées sur Wikipedia, mais du coup, il fallait une _source_ pour l'indiquer) ![Librairie](https://blog.garden-party.experimentslabs.com/generated/assets/images/20201216_gp_librairie-1000-0cd41ac2c.png) Chaque plante « appartient » à un des niveaux que l’on retrouve dans les concepts de forêt-jardin (du sou-sol à la canopée), ce qui permet de filtrer l’affichage sur la carte. On peut planter des éléments « seuls », comme des arbres, ou créer des parcelles contenant plusieurs éléments. Il est possible d’ajouter des animaux sur les cartes, car oui, ~~ce sont des plantes~~ ils ont leur place dans les jardins. Bon, la bibliothèque en est exempte pour le moment. Un élément (animal ou végétal) a une sorte de cycle de vie: _planifié_ (on veut/va en mettre), _mis en place_ (on l’a planté/mis en liberté) ou _retiré_ (le plant est mort, on l’a coupé, l’animal \*n’est plus là\*). ![Cycles de vie](https://blog.garden-party.experimentslabs.com/generated/assets/images/20201216_gp_actions-863-09cfb2190.png) Chaque action est planifiable et pour les plus courantes, on les retrouve dans une liste de « trucs à faire » ![Liste de tâches](https://blog.garden-party.experimentslabs.com/generated/assets/images/20201216_gp_todo-996-fd61ff4c5.png) Chaque élément a son historique d’actions. [Historique](https://blog.garden-party.experimentslabs.com/generated/assets/images/20201216_gp_historique-988-16f271336.png) Une vue d’ensemble affiche tous les différents éléments. ![Vue d’ensemble](https://blog.garden-party.experimentslabs.com/generated/assets/images/20201216_gp_vue_d_ensemble-1000-29d5b7814.png) ### Techniquement parlant… C’est une application Ruby on Rails (web, donc) avec, pour l’_application_, un frontend en VueJS et des cartes affichées grâce à OpenLayers. Pour l’administration, des vues « standard » Ruby on Rails. Une API REST est disponible pour les utilisateurs inscrits (à voir s’il ne faudrait pas l’ouvrir en partie pour la librairie). Une documentation Swagger est disponible aussi, pour un petit confort non négligeable si vous voulez créer votre client. Le code est testé, au moins sur le _backend_ (droits, retours d’API, comportement des actions…), et les tests pourraient être améliorés sur le _frontend_. Le support multi-langue est implémenté ; l’ensemble de l’application est traduit en français/anglais (mis à part les données : c’est en français) Pour les devs Rails + Vue, il y a des trucs potentiellement intéressants: des tâches Rake pour générer les **stores VueX** et des simili-modèles en JS; des **_templates_ de _scaffolding_** modifiés pour les contrôleurs, vues d’administrations et tests de requête ; une gem qui **teste les retours API avec RSpec** et génère la doc Swagger (elle aurait bien besoin d’amour, cette gem) ; les traductions `vue-i18n` sont gérées par Rails \o/… ## Futur de Garden Party Le projet est jeune mais a un potentiel d’évolution intéressant ; hormis le fait qu’il soit libre, quelques idées font partie de la feuille de route aujourd’hui, et seront développées si une communauté se forme autours de ce logiciel : - intégration de données géographiques ; - statistiques géographiques (qu’est-ce qui est planté quand et où ?) ; - partage d’agencements fonctionnels (tel plant marche bien avec tel plant, plantés de telle manière) ; - intégration de données météorologiques ; - sauvegarde de photos des plants ; - partage de données inter-instances : bibliothèque de plantes, de statistiques, etc. (ActivityPub ?). ## Écosystème Si on peut parler d’écosystème, on a [une instance qui tourne](https://garden-party.experimentslabs.com), un semblant de [manuel utilisateur](https://doc.garden-party.experimentslabs.com) et ce blog. Ah, et un [chat matrix](https://matrix.to/#/!fROsPDUgtYILajhMWg:matrix.org), une [liste de diffusion](https://framalistes.org/sympa/subscribe/garden-party) et [un blog](https://blog.garden-party.experimentslabs.com) avec application dans la vie réelle. ## Vous voulez participer ? - Vous êtes dev VueJS et que vous aimez écrire des tests, bah… plus que bienvenue, on en manque cruellement (tests avec `vue-test-utils` et `Jest`) - Vous avez utilisé l’application mais l’interface vous rebute, on en discute, elle répond au besoin de ses devs pour le moment… Ce qui est très bien, mais pas assez pour être utilisé par d’autres. - Les pictos d’éléments sont générés (SVG) et peu différenciables : un _Poirier_ et un _Pommier_ auront exactement le même picto (même _niveau_, même première lettre). Ce serait top d’avoir des pictos par famille (forme par famille, lettre par élément, par exemple). - Vous voulez plus de contenu dans la bibliothèque, proposez ! - Heu… On est des quiches en jardinage… les termes ne collent pas ? On veut apprendre ! Dites-nous tout ! - Il manque des actions… Si vous voulez nous dire merci, c’est gentil. Et si vous nous dites que c’est tout pourri, sans explication… → `/dev/null` Une nouvelle aventure commence !