Studio Drupal · Diego-Suarez, Madagascar
Fondé en 2025 · 12°16′ S

Ecosystems

Un visualiseur d'écosystème interactif pour Drupal : un ensemble sélectionné d'espèces devient une communauté vivante qui change au fur et à mesure que les visiteurs se déplacent dans le temps, le lieu et l'habitat.

Ce que c'est

Ecosystems est un module Drupal qui présente un ensemble sélectionné d’espèces comme une communauté vivante. Chaque espèce porte des paramètres de réponse écologique, ainsi, lorsqu’un visiteur modifie les réglages du temps, du site d’enquête et de la quantité et de la qualité des milieux boisés, les espèces arrivent, déclinent ou disparaissent.

Il est conçu comme un produit pour tout site Drupal 10 ou 11 et n’a besoin d’aucun des modules de données de MADDev : il peut fonctionner à partir d’une simple charge utile JSON. Son premier client est le Quercus Project, dont l’inventaire de la biodiversité des chênes du sud et du centre de la Suède est le premier jeu de données qu’il affiche.

En un coup d'œil

Modules
ecosystems, le visualiseur et son moteur de données ; ecosystems_builder, un outil de création facultatif
Cœur de Drupal
10 ou 11
Prérequis
Options, Taxonomie et Vues du cœur ; MADDev infopanel et request_bus
Données sur les espèces
Une charge utile JSON, des enregistrements d’espèces stockés sous forme d’entités Drupal, ou un type d’entité d’espèce fourni par un autre module
Enrichissement facultatif
Descriptions Wikipédia, photographies et observations GBIF, species_ext
Rendu
SVG et HTML, pas de canvas et pas d’étape de build ; thèmes clair, sombre et à contraste élevé via des propriétés personnalisées CSS
Premier jeu de données
L’enquête INFRAVIS sur la biodiversité des chênes du Pr Markus Franzén : 824 espèces en 30 ensembles (10 communautés mixtes et 20 guildes) réparties sur 31 sites d’enquête
Statut
Fonctionnel ; la version 4 de son modèle de données a été vérifiée en août 2026. Installé sur le site en production du Quercus Project, pas encore ouvert au public.

Ce que voient les visiteurs

Une page d'ensemble présente quatre vues de la même communauté, dessinées en SVG afin que chaque étiquette puisse être sélectionnée, traduite et lue par un lecteur d'écran :

  • une carte d'adéquation des sites d'enquête
  • une coupe transversale depuis la canopée jusqu'au sol
  • un diagramme en arcs d'interaction selon un ordre trophique fixe
  • des fiches d'espèces

Le modèle de réponse de l'auteur du jeu de données s'exécute sans modification dans le navigateur pour la simulation interactive. Un portage PHP de sa partie sans état affiche la page avant l'exécution de tout script, de sorte que les moteurs de recherche et les visiteurs sans JavaScript obtiennent de vrais nombres ; un test de parité maintient les deux implémentations synchronisées.

Ce que cela apporte à un site Drupal

Pages

Chaque page publique est une vue, une entité ou un terme de taxonomie. Il n'y a pas de contrôleurs de page personnalisés, donc un constructeur de site peut réorganiser le produit sans développeur.

  • /ecosystems : chaque ensemble, regroupé en communautés et guildes (Vue ecosystem_sets)
  • une page par ensemble : un terme de taxonomie avec la visionneuse placée via Gérer l'affichage
  • /ecosystems/species/{id} : une espèce avec son enrichissement
  • /ecosystems/payload.json : la charge utile brute

Composants d'affichage

  • ecosystem_viewer : la visionneuse interactive
  • enrichment_<source> : un composant par source d'enrichissement, placé et désactivé indépendamment ; une source désactivée n'est jamais récupérée

Point d'extension

SpeciesRecordSourceInterface, collecté via l'étiquette de service ecosystems.species_record_source. N'importe quel module peut fournir une source d'espèces, et Ecosystems la sélectionne par son nom sans connaître ses champs ni son stockage. Le paramètre ecosystems.settings:source choisit entre un fichier JSON, les entités propres au module et une source fournie.

Commandes Drush

ecosystems:import, ecosystems:enrich, ecosystems:interactions, ecosystems:verify

Accès

La permission Voir la visionneuse d'écosystème n'est accordée à personne lors de l'installation, donc une nouvelle installation reste privée jusqu'à ce que quelqu'un l'ouvre.

Création avec ecosystems_builder

Recherchez un vivier d'espèces, ajoutez des espèces à une communauté ou à une guilde, et acceptez ou refusez les suggestions du Builder sur ce qui doit également y figurer. Chaque modification passe par un seul service, donc désinstaller le Builder laisse chaque écosystème exactement tel qu'il était.

Sources de données et licences

  • Wikipedia : une description en langage clair, essayée d'abord en anglais puis en suédois, sous licence CC BY-SA et créditée sur la page
  • GBIF : une photographie, acceptée uniquement sous CC0 ou CC BY selon ce que l'API rapporte réellement, car une grande partie du contenu suédois de GBIF est sous CC BY-NC, qu'un client payant ne peut pas publier ; ainsi que les dernières observations suédoises et un nombre d'observations
  • species_ext, lorsqu'il est installé : sa photographie stockée, son récit et ses interactions typées entre espèces

Rien n'est récupéré pendant le rendu d'une page. Les appels sortants passent par request_bus, et les valeurs récupérées sont conservées dans un stockage clé-valeur, de sorte qu'une reconstruction du cache n'entraîne pas la perte de centaines de recherches. L'attribution et la licence d'un jeu de données voyagent avec sa charge utile, et non avec le code.

Décisions de conception

  • Vendez la visionneuse, pas la stack. Aucune dépendance à species_ext ou dynamic_mirror_base : sans les modules de données de MADDev, Ecosystems fonctionne à partir d'une charge utile JSON exportée et n'effectue aucun appel sortant.
  • Les valeurs dérivées n'ont pas de widget de formulaire. Les paramètres du modèle, les éléments de preuve d'enquête et les résultats précalculés sont en lecture seule, de sorte que les modifications manuelles ne peuvent pas compromettre la cohérence du modèle.
  • Une source d'enrichissement, un composant. Gérer l'affichage détermine ce qui apparaît et où, et une source désactivée ne coûte rien.
  • Privé par défaut. Personne ne voit la visionneuse tant que l'autorisation n'est pas accordée.

Démarrer un projet.

Parlez-nous de vos données sur les espèces et du site sur lequel elles doivent être hébergées.