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 #
| Section | Rô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.