Construire un module

Le manifeste (module.toml)

Le fichier module.toml à la racine décrit votre module au core : identité, processus, port, routes, entrées de barre latérale et événements.

Exemple complet #

[module]
id           = "calendar"        # alphanumérique + '-' + '_'
display_name = "Calendar"
version      = "0.1.0"
description  = "Calendriers, événements, CalDAV…"
author       = "Kubuno Contributors"
license      = "AGPL-3.0"
runtime      = "rust"             # rust | python | node | binary
settings_path = "/calendar/settings"  # optionnel

[process]
entrypoint = "kubuno-calendar"     # nom de l'exécutable
args       = []

[server]
host = "127.0.0.1"
port = 3102                        # port dédié du module (le core est sur 8080)

[routes]
patterns = [
    { method = "*", path = "/*" },
]

[[sidebar_items]]
id       = "calendar"
label    = "Calendar"
icon     = "Calendar"             # nom d'icône Lucide
path     = "/calendar"
position = 20                      # ordre de tri
section  = "main"                  # main | secondary

[events]
subscribed = ["UserDeleted", "ContactUpdated"]
publishes  = ["EventCreated", "EventUpdated", "EventDeleted"]

Les sections #

SectionRôle
[module]Identité : id, display_name, version, runtime, licence.
[process]Exécutable lancé par le superviseur du core (entrypoint + args).
[server]host et port sur lesquels le module écoute en local.
[routes]Motifs de routes que le core proxifiera vers le module.
[[sidebar_items]]Entrées de la barre latérale (icône Lucide, position, section).
[events]Événements subscribed (reçus) et publishes (émis).
Note

Le manifeste est aussi un garde-fou de compatibilité : la version est confrontée à celle attendue par le core, et côté frontend le module déclare son sdkVersion.