Savoir.
Développeurs

Développez votre propre module.

Savoir rassemble le savoir d'une organisation en un graphe. Ce qu'on en fait ensuite — une carte, un organigramme, un tableau de bord métier — vit dans des modules. Un module est un produit indépendant : votre dépôt, votre rythme, votre licence. Voici comment en écrire un.

Un module, c'est un document HTML autonome

Pas de cadriciel imposé, pas d'étape de compilation obligatoire : ce que vous savez déjà du web suffit. L'instance affiche votre page dans un cadre isolé et lui fournit tout le reste — la barre d'outils, l'import, l'export, l'assistant. Vous écrivez la vue ; l'hôte s'occupe du décor.

Autonome

Un fichier `module.html`, votre CSS, votre JavaScript, et les dépendances que vous embarquez avec. Le module se suffit à lui-même : rien à installer côté serveur.

Dans un bac à sable

L'instance l'exécute isolé, sans accès réseau propre : ni CDN, ni requête sortante, ni cookie. C'est précisément ce cloisonnement qui permet à une organisation d'installer un module écrit par quelqu'un d'autre.

Le SDK vient de l'hôte

L'instance injecte l'objet `savoir` dans votre page — ne l'embarquez jamais. Les données passent par lui, et par lui seul. Votre module n'a donc ni jeton, ni secret, ni adresse à configurer.

Quatre commandes, et votre module tourne

Le gabarit n'est pas un squelette vide : c'est un module complet qui fonctionne, avec son manifeste, son icône, ses tests et son intégration continue. Clonez-le, renommez-le, remplacez la vue par la vôtre.

git clone https://gitlab.com/gpharand/savoir-module-gabarit mon-module
cd mon-module
npm install
npm run dev

`npm run dev` dépose votre module dans le catalogue d'une instance Savoir de développement, où il apparaît au menu Modules avec le badge `local`. La boucle est ensuite très courte : éditer, relancer `npm run dev`, rouvrir le module — sans jamais redémarrer le serveur.

Le pont entre votre module et le graphe

L'objet `savoir` est votre unique porte vers les données. Attendez `savoir.pret` avant tout appel ; la réponse d'une requête est une enveloppe dont vous déballez `results`.

await savoir.pret;

const { results } = await savoir.query({ find: 'nodes', where: { type: 'instance' } });
afficher(results);

savoir.on('graphe:maj', () => recharger());

Le SDK offre aussi le contexte de l'espace courant, les outils autorisés, les jalons du voile de chargement et les gestionnaires d'export et de correspondance. Chaque instance Savoir sert la référence du SDK qu'elle offre, à sa version : c'est elle qui fait foi, jamais une copie.

Vous ne codez pas contre le modèle d'un client

Chaque organisation nomme ses choses à sa façon. Votre module déclare donc les RÔLES dont il a besoin — « un concept qui joue le rôle de lieu », « une relation qui rattache une personne à son équipe » — dans un fichier `contrat.json`. C'est l'usager qui, à l'installation, fait correspondre ces rôles à SON modèle. Votre code ne connaît que vos propres noms, et fonctionne chez tout le monde.

Votre rôle d'auteur s'arrête au push

Un dépôt de module ne contient aucun script de déploiement, et ne doit pas en contenir : c'est la plateforme qui télécharge votre dépôt, le scanne et le publie. Vous versionnez dans `module.json`, vous committez, vous poussez. La plateforme épingle le commit — ce qui est publié ne peut plus changer sous les pieds des instances qui l'ont installé.

Un dépôt par module

Votre module vit chez vous, avec ses dépendances, ses tests et son intégration continue. Il n'entre jamais dans le dépôt de Savoir.

Le scan d'admission

Avant publication, la plateforme refuse pour de vrai ce que le bac à sable interdirait de toute façon : code évalué à la volée, accès au cadre parent, formulaires sortants, icône exécutable. Un refus vous dit quoi corriger.

Le même cycle que nous

Les dépôts de modules suivent un cycle outillé, publié en source ouverte : issue, spec, plan, développement, intégration, livraison. Vous pouvez l'adopter — ou pas : rien ne vous y oblige.

Voir le cycle (source ouverte)

À lire pour comprendre

Le gabarit répond au « par où je commence ». Les modules ci-dessous répondent au « à quoi ça ressemble en vrai ».

Le gabarit

Le point de départ : un module minimal mais complet, avec son manifeste, son icône, ses tests et son intégration continue.

Voir le dépôt

Carte

Place sur une carte les instances du graphe qui portent des coordonnées.

Voir le dépôt

Organigramme

Dessine la hiérarchie d'une organisation à partir de ses relations.

Voir le dépôt

Il vous faut un espace pour essayer

Créez un espace gratuit : il vous sert d'instance de développement, et votre module y apparaît dès le premier `npm run dev`.