Le core (Rust + Axum)
Une passerelle unique : reverse-proxy, authentification, bus d'événements et accès au stockage. Léger, rapide, il ne contient aucune logique métier.
Kubuno n'est pas un monolithe. Un petit core en Rust orchestre une constellation de modules autonomes — chacun son processus, son dépôt et son paquet .deb — qui dialoguent par HTTP et par des événements partagés. Voici comment tout s'emboîte.
Une passerelle unique : reverse-proxy, authentification, bus d'événements et accès au stockage. Léger, rapide, il ne contient aucune logique métier.
Chaque app est un processus séparé sur 127.0.0.1, livré en .deb, qui s'enregistre auprès du core au démarrage. Aucun module ne lie le core.
Un host React 19 unique charge l'UI de chaque module à la volée via des import maps ESM. Toutes les apps partagent un shell, une session et un design cohérents.
Un seul moteur joue trois rôles : base de données, bus d'événements (LISTEN/NOTIFY) et file de jobs (SKIP LOCKED). Ni Redis, ni broker externe.
Un schéma PostgreSQL dédié par app, un bac à sable seccomp qui interdit l'exécution de processus, et des routes internes signées par un secret.
Des points d'extension bien définis (routes, événements, entrées de menu) laissent la communauté ajouter des modules sans toucher au core.
De l'ouverture du navigateur à l'écriture en base, sans jamais quitter votre serveur.
Le navigateur charge le host React ; les import maps résolvent chaque module vers son entrée ESM /modules/<id>/entry.js.
L'app envoie sa requête au core en HTTPS, accompagnée d'un JWT (avec refresh token en cookie HttpOnly).
Il vérifie l'identité, puis agit en reverse-proxy vers le module concerné sur 127.0.0.1:31xx, avec un en-tête interne signé (X-Internal-Secret).
Le module lit ou écrit dans son schéma PostgreSQL, puis publie un événement via NOTIFY.
Les autres modules réagissent à l'événement (LISTEN) ; les traitements longs partent dans la file de jobs (SKIP LOCKED).
La documentation technique détaille le core, le manifeste des modules, les points d'extension et la sécurité.