✦ Leaf through your geodata

GeoLeaf
La feuille de route de vos territoires

Framework cartographique en production (v3), basé sur MapLibre GL JS 6 : affichez et stylisez vos données géographiques — points, itinéraires, polygones, GeoJSON — directement dans le navigateur, pilotées par de simples fichiers JSON.

  • 100 % frontend
  • Open source (MIT)
  • Mobile & terrain

Ce que vous pouvez faire avec GeoLeaf

Visualisez, explorez et partagez vos données géographiques métier — sans développement lourd, sans dépendance backend, configurable par simples fichiers JSON.

Visualisez vos données géographiques

Sans une ligne de code

Affichez des milliers de points, zones et itinéraires sur une carte WebGL. Clustering automatique, heatmaps, popups enrichies — tout piloté par vos profils JSON.

  • Couleurs, icônes, fenêtres d'échelle et styles personnalisés dans le JSON — sans toucher au code
  • Clustering natif MapLibre, heatmaps et regroupements par catégorie
  • Popups et fiches enrichies : images, liens, tableaux de données, boutons d'action
  • Rendu GPU par le moteur MapLibre GL JS, sur toute la surface de la carte

Explorez, filtrez & analysez

Tout est configurable par profil

Offrez à vos utilisateurs une navigation riche — recherche, filtres combinés, panneau latéral détaillé et vue tableau — sans développement spécifique.

  • Recherche textuelle instantanée + filtres par catégorie, valeur ou distance géographique
  • Filtres combinables et persistants à l'URL — partagez une vue filtrée en un lien
  • Vue tableau tri multi-colonnes, avec export GeoJSON, CSV, KML, GPX et Excel
  • Panneau latéral 100 % configurable — sections, champs et mise en page définis en JSON

Intégrez n'importe où, sans backend

Zéro serveur propriétaire

GeoLeaf est 100 % frontend — un import npm ou deux balises, un dossier de profils JSON et c'est parti. Aucune dépendance backend, aucun abonnement cloud.

  • Compatible Odoo, WordPress, ERP, API REST, fichiers statiques ou CDN
  • PWA installable iOS/Android — moteur hors ligne intégré au cœur (tuiles, données, synchronisation)
  • Un profil = un dossier JSON versionnable, déployable et interchangeable à chaud
  • Branding complet configurable : logo, couleurs, thèmes, langue — sans recompiler
  • Sécurité durcie : CSP stricte, protection XSS/CSRF, sanitisation intégrée

Une solution multi-secteur

GeoLeaf s'adapte à tout contexte métier — un profil JSON suffit à passer d'un secteur à l'autre.

  • 🏕️ Tourisme & territoires
  • 🏛️ Collectivités & services publics
  • 💡 Réseaux & énergie
  • 🚌 Mobilité & transport
  • 🏗️ GMAO & patrimoine technique
  • 🌿 Environnement & agriculture
  • 🚚 Logistique & supply chain
  • 🏥 Santé & proximité
  • 🏢 Immobilier & aménagement

Un profil = un dossier (profiles/<id_metier>)

Chaque profil est un dossier de fichiers JSON autonomes, versionnables et déployables indépendamment du cœur GeoLeaf. Activez un profil via la configuration globale pour basculer instantanément d'un usage métier à un autre.

  • profile.json — identité (id, label, version), section map et manifeste Files.
  • config/core/themes, layers, basemaps, ui, features et mapping.
  • config/plugins/<id>.json — une configuration par module, opaque pour le cœur (Plugin Contract v1, bloc modules.<id>).
  • layers/<id>/ — un dossier autonome par couche : sa déclaration, ses données GeoJSON et ses styles MapLibre.
  • icons/ — les icônes SVG propres au profil.
Arborescence d'un profil GeoLeaf Le dossier profiles/<id_metier>/ contient profile.json (identité, section map, manifeste Files) ; config/ réunit core/ (themes, layers, basemaps, ui, features, mapping) et plugins/ (un fichier <id>.json par module, Plugin Contract v1) ; layers/<id>/ contient la déclaration de la couche, un dossier data/ de GeoJSON et un dossier styles/ de styles MapLibre ; icons/ regroupe les icônes SVG propres au profil. profiles/<id_metier>/ Un dossier autonome — versionnable, déployable, interchangeable profile.json identité · section map · manifeste Files config/ la configuration du profil, en deux dossiers core/ themes · layers · basemaps · ui · features · mapping plugins/ <id>.json — un par module · Plugin Contract v1 layers/<id>/ un dossier autonome par couche <id>_config.json déclaration de la couche data/ *.geojson styles/ *.json — styles MapLibre icons/ icônes SVG propres au profil dossier fichier Plugin Contract v1 · bloc modules.<id>

Un socle cartographique complet

GeoLeaf est un framework cartographique open source (MIT), modulaire et 100 % frontend, conçu pour afficher, structurer et explorer des données géographiques métier.

Interface, thèmes & panneaux

Thème clair / sombre, automatique ou forcé, palettes personnalisables et sélecteur de fond de carte. Tooltips et popups riches, panneau latéral structuré par sections, légende et tableur activables à la demande.

Profils, couches & formats

Un profil = un dossier autonome versionnable : catégories, sous-catégories et jeux d'icônes SVG configurables en JSON. Support natif des points, lignes et polygones, tuiles vectorielles, OGC API Features, raster, hillshade et WMTS/WMS.

Filtres & recherche

Panneau de filtres latéral, indexation par couche et par champ. Recherche textuelle simple ou combinée, filtres par tags et catégories, recherche par proximité géographique.

Mobile & hors ligne

Interface 100 % responsive, pensée pour les usages terrain sur smartphone et tablette. PWA installable, moteur hors ligne intégré au cœur : cache des tuiles et des données, synchronisation via IndexedDB.

Sécurité & robustesse

Content Security Policy stricte (style-src sans unsafe-inline), protection XSS et validation des URL au rendu, jetons CSRF, garde anti prototype-pollution. Export Excel réécrit sans dépendance tierce — deux CVE éliminées.

Intégration & maturité

Cycle de vie propre create → destroy → recreate, pour les remontages React et la navigation SPA — aucune couche ni marqueur qui survit. TypeScript strict, architecture extensible Plugin Contract v1, internationalisation native en 6 langues.

Formats de données pris en charge, nativement ou par plugin

  • GeoJSON
  • WKT
  • MVT / PMTiles
  • OGC API Features
  • WMTS / WMS
  • FlatGeobuf
  • COG (GeoTIFF)
  • GPX
  • KML / KMZ
  • CSV
  • TopoJSON
  • WebSocket / SSE / GTFS-RT

Un noyau, des capacités, des plugins

Trois couches — et vous n'embarquez que celles dont vous avez besoin.

13

Le noyau

Le moteur cartographique, la configuration et la sécurité. Toujours là.

21

Les capacités

Légende, filtres, clustering, hors ligne, PWA… Activées depuis le profil.

12

Les plugins

Impression, édition, import, temps réel… Ajoutés au besoin, sans toucher au cœur.

Une capacité que vous ne prenez pas n'est pas différée — elle n'est pas dans le fichier.

  • 21 → 6 capacités embarquées
  • −18,5 % au démarrage
  • −13 feuilles de style

Mesuré le 09/08/2026, revérifié à chaque build.

Prêt à intégrer en 5 minutes

Installez par npm ou servez les fichiers depuis votre propre origine, puis pilotez l'affichage par vos profils JSON. Aucune étape de build n'est requise côté intégrateur.

app.ts
// npm install @geoleaf/core maplibre-gl
import { Core } from "@geoleaf/core";
import "maplibre-gl/dist/maplibre-gl.css";
import "@geoleaf/core/style.css";

// center est [lat, lng] côté GeoLeaf ; la conversion vers
// MapLibre ([lng, lat]) est interne.
Core.init({ mapId: "map", center: [48.8566, 2.3522], zoom: 12 });

MapLibre GL JS 6 est une peer dependency ESM-only — GeoLeaf ne l'embarque pas, pour que vous en maîtrisiez la version. Pensez à servir les .mjs en text/javascript (nginx : types { text/javascript mjs; }). Guide de démarrage →

  • TypeScript strict
  • ESM-only
  • MapLibre GL JS 6
  • WebGL2
  • MIT
  • Node ≥ 22
  • Types complets inclus et namespace global publié — IntelliSense dans VS Code et tout IDE LSP.
  • Sous-chemins exports stables et tree-shakables : @geoleaf/core/kernel, /capabilities/<id>, /facades/<nom>. Le CSS suit le code.
  • Événements typés émis sur document : geoleaf:filters:applied, geoleaf:geojson:visibility-changed et plus — API événementielle documentée.
  • PWA installable iOS/Android, focus trap, aria-modal, prefers-reduced-motion et i18n en 6 langues.

Étendez GeoLeaf selon vos besoins

Le cœur couvre l'essentiel. Douze plugins, tous sous licence MIT, activent les cas d'usage avancés : chacun est autonome, et s'active par une ligne de configuration JSON.

Connector

@geoleaf-plugins/connector

Intercepteur fetch universel pour sources authentifiées (GeoJSON, FlatGeobuf, KML, CSV, OGC API). Jetons statiques, JWT ou asynchrones (OAuth, Keycloak, Auth0), modale de connexion et rafraîchissement automatique.

npm

Editor

@geoleaf-plugins/editor

Création et édition de géométries (point, ligne, polyligne, polygone) via Terra Draw, catalogue de formulaires attributaires responsives, persistance en ligne et hors ligne.

npm

Print

@geoleaf-plugins/print

Export PDF / JPG à 300 DPI : parcours échelle × format papier (A4/A3), re-rendu off-screen, légende inline et flèche nord. Annotations composées si Measure est chargé.

npm

Measure

@geoleaf-plugins/measure

Mesure de distances et de surfaces, cercle, suivi GPS et annotations tooltip géoréférencées. Export GeoJSON.

npm

Table

@geoleaf-plugins/table

Vue tableau des entités : tri multi-colonnes, recherche, sélection liée à la carte et export GeoJSON, CSV, KML, GPX et Excel.

npm

Geocoding

@geoleaf-plugins/geocoding

Recherche d'adresse multi-provider (Addok, Nominatim, Photon…) avec pill de recherche intégrée à la carte.

npm

Offline UI

@geoleaf-plugins/offline-ui

L'interface du mode hors ligne : bouton de mise en cache, sélecteur de couches à télécharger et panneau de synchronisation. Le moteur, lui, est intégré au cœur.

npm

File Import

@geoleaf-plugins/file-import

Conversion et import de GPX, KML/KMZ, CSV et TopoJSON en couches GeoJSON, intégralement dans le navigateur.

npm

FlatGeobuf

@geoleaf-plugins/flatgeobuf

Lecture en flux de fichiers FlatGeobuf avec filtrage spatial par emprise, via index R-tree et requêtes HTTP Range.

npm

COG

@geoleaf-plugins/cog

Rendu de Cloud Optimized GeoTIFF en couches image MapLibre : multi-bandes, table de couleurs et lecture par HTTP Range.

npm

Realtime Layer

@geoleaf-plugins/realtime-layer

Mise à jour temps réel des couches par polling, WebSocket ou SSE, avec décodage GTFS-RT — transport, IoT, alertes géographiques.

npm

WebSocket

@geoleaf-plugins/websocket

Infrastructure de transport temps réel générique — reconnexion, multiplexage et gestion d'abonnements — partagée par les couches et les autres plugins.

npm

MIT, sans exception

Le cœur et les douze plugins sont publiés sous licence MIT. Pas d'édition commerciale, pas d'abonnement, pas de fonctionnalité réservée.

  • Usage libre, y compris commercial
  • Modification et redistribution autorisées
  • Aucune dépendance backend propriétaire

Tout ce que vous devez savoir sur GeoLeaf

Oui, entièrement. Le cœur et les douze plugins sont publiés sous licence MIT, sans exception ni édition commerciale. Vous pouvez les utiliser librement, y compris dans des projets professionnels, sous réserve de conserver la mention de copyright et le texte de la licence lors de toute redistribution.
Non. GeoLeaf est une bibliothèque 100 % frontend, basée sur MapLibre GL JS, qui consomme des données JSON. Elle peut être utilisée avec Odoo, un autre ERP, un CMS, une API personnalisée ou de simples fichiers statiques, sans dépendance serveur imposée.
Le sélecteur de fond de carte pilote uniquement les tuiles d'arrière-plan. Les couches métier (points, lignes, polygones, overlays) sont gérées séparément via la légende et le gestionnaire de couches, afin de contrôler précisément les données affichées.
Oui, et il est intégré au cœur : Service Worker, cache des tuiles et des données, synchronisation via IndexedDB. Le plugin MIT offline-ui n'ajoute que l'interface — bouton de mise en cache, sélecteur de couches à télécharger et panneau de synchronisation.
MapLibre GL JS 6, déclaré en peer dependency : GeoLeaf ne l'embarque pas, pour que vous en maîtrisiez la version. La v6 est ESM-only et exige WebGL2 — le chemin WebGL1 a été retiré par le moteur. Node 22 ou plus n'est requis que pour la chaîne de build, pas pour exécuter la carte.
GeoLeaf applique une Content Security Policy stricte (directive style-src sans 'unsafe-inline'), échappe le HTML et valide les URL au rendu (protection XSS), gère les jetons CSRF et bloque la prototype-pollution. L'export Excel a été réécrit sans dépendance tierce, éliminant deux CVE connues.

Besoin d'accompagnement autour de GeoLeaf ?

GeoLeaf est un framework open source. Si vous souhaitez être accompagné pour son intégration, la conception d'un profil métier, l'adaptation à votre architecture (ERP, API, CMS) ou le développement de fonctionnalités spécifiques, décrivez votre contexte. Nous vous répondons sous 48h.

LinkedIn

Mattieu Pottier

Disponibilité

Lun – Ven, 9h – 18h