Des documents Grist qui deviennent des applications métier, sur mesure

Un tableur collaboratif porte déjà les données, les droits et l'historique. Ce dépôt ajoute ce qui manque pour en faire un outil de travail : des vues qui lisent ces tables au lieu de les copier — carte, planning, formulaire, plan de charge — et la chaîne qui permet de les fabriquer.

Grist, en deux mots

Grist est un tableur relationnel collaboratif, libre et auto-hébergeable : des tables liées entre elles, des formules en Python, des règles d’accès fines, et une API sur laquelle des vues peuvent se greffer. C’est ce dernier point qui rend ce dépôt possible — un widget personnalisé est une page web à qui le document ouvre ses données.

Pour les administrations françaises, deux instances publiques existent déjà, gérées par des opérateurs de l’État : rien à héberger pour commencer, et les données restent sur le territoire. C’est le cadre dans lequel ces widgets sont pensés — souverain, libre, sans service tiers intercalé.

getgrist.com — le produit, sa documentation et son offre hébergée grist-core — le code source, sous licence Apache 2.0 grist.numerique.gouv.fr — l’instance de La Suite numérique (DINUM), pour les agents publics grist.incubateur.anct.gouv.fr — l’instance de l’incubateur des territoires (ANCT) forum.grist.libre.sh — le forum francophone — c’est là que ces widgets sont annoncés, discutés et corrigés

Les widgets

Ce qui les rend différents

La donnée ne bouge pas

Un widget est une vue, pas un export. Il lit la table avec ses formules et ses liens ; quand elle change, la vue a déjà changé. Rien à réexporter, rien à resynchroniser.

Les droits sont ceux du document

Aucun système d'accès en plus de celui de Grist. On partage un document, les vues suivent : un lecteur consulte, il ne modifie pas.

Chez vous, pas chez un tiers

Ces widgets sont des fichiers statiques servis depuis GitHub Pages, et ils fonctionnent sur n'importe quelle instance Grist, y compris auto-hébergée. Aucun service tiers ne s'intercale entre vous et vos données.

Sans dépendance de build

HTML, CSS et JavaScript autonomes. Pas de chaîne de compilation à maintenir, pas de paquet à mettre à jour pour qu'un widget continue de s'ouvrir dans trois ans.

Le même widget, trois usages

Un widget n'est pas prisonnier de son document. La même adresse sert à concevoir, à diffuser et à relever sur le terrain — ce qui change, c'est ce que l'environnement permet.

Ce qu'on y faitAccès
Dans un document GristLe cas courant : le widget est une vue du document, à côté des tables. On construit, on modifie, on écrit dans les mêmes tables.Lecture et écriture, selon les droits de la personne
Dans un navigateurLa même adresse ouverte seule. On charge un fichier, on importe depuis OpenStreetMap, on consulte une scène partagée. Rien à installer pour regarder.Ce que le document autorise en lecture
Sur le terrainEmpaqueté en application Android, le widget ouvre les scènes d'un compte sans passer par un document — parce qu'un navigateur ne peut pas présenter de clé API à l'instance.Compte complet, hors du moteur web

Une chaîne, pas des outils épars

QGISun projet cartographique, ses couches et sa symbologie
qgis2gristl'import : les couches deviennent des tables, le schéma est déduit de la donnée
Gristla donnée vit avec ses formules, ses liens et ses droits
Atlasla vue : carte, relief, symbolisation, récit rejouable
Terrainl'application relève sur place, et écrit dans les mêmes tables

Outiller les agents plutôt que les remplacer

Construire une application métier demande d’aller chercher la donnée, de la mettre en forme, d’écrire un widget, de le déployer. Plutôt que d’automatiser ces gestes un par un, on donne à un assistant les outils pour les faire — via le protocole MCP, qui expose un logiciel comme un jeu d’actions qu’un modèle peut appeler. L’assistant travaille alors dans vos outils, avec vos droits, sur vos données.

Construire dans le document

GristCoder

Un serveur MCP qui relie un assistant à un document Grist, accompagné d’un widget d’édition et d’aperçu. Ce qui est produit — HTML, React — est enregistré dans le document lui-même : aucun hébergement externe, et l’artefact suit le document qui le porte. En discuter sur le forum.

Donner l’API, sans interface

mcp-server-grist

L’implémentation MCP de l’API Grist : lire des tables, en écrire, décrire un schéma. C’est la brique qu’on branche quand l’assistant doit manipuler la donnée sans qu’on ait besoin d’un atelier autour. En discuter sur le forum.

Ce qui tient les projets ensemble

Ces widgets ne partagent pas de code — ils partagent des contrats. Un même document peut donc passer d’un outil à l’autre sans conversion, et un projet peut évoluer sans casser les autres.

Scene Manifest

Le contrat de scène cartographique : qgis2grist l’écrit à l’import, Atlas le lit pour dresser la carte — couches, symbolisation déclarative, contrôles. Ni l’un ni l’autre n’a besoin de connaître l’autre, seulement le contrat.

Les tables d’un widget lui appartiennent

Chacun crée les tables dont il a besoin, préfixées à son nom, et seulement s’il en a besoin. Un document où l’on n’ouvre pas le plan de charge n’en porte pas les tables.

Les droits ne sont jamais réinventés

Aucun widget ne tient sa propre liste d’accès. Tous appliquent ceux du document, et vérifient par une écriture réelle plutôt que de croire ce que l’hôte annonce.

Ce dépôt n’est pas seul

Les widgets rassemblés ici couvrent la vue métier — carte, planning, formulaire, plan de charge. D’autres équipes en couvrent d’autres, et leurs widgets s’installent exactement de la même façon : c’est le même écosystème, pas une offre concurrente. Viennent ensuite les briques libres dont ces vues sont faites — sans elles, rien de tout cela ne s’afficherait.

Widgets Grist.gouv — Données & Territoires — codeInsee, codeSiren, geocode, omFiller : enrichir et nettoyer des données d’administration française — codes INSEE et SIREN, géocodage d’adresses, remplissage d’ordres de mission Leur fil sur le forum. grist-widget — le dépôt officiel de Grist Labs, et le modèle dont la structure de celui-ci s’inspire MapLibre GL JS — le moteur de rendu cartographique d’Atlas, libre et communautaire OpenStreetMap et OpenFreeMap — le fond de carte et ses tuiles — Atlas les affiche et les crédite, il ne les remplace pas three.js — les volumes, les modèles 3D et les ombres portées