Démarrer

Architecture

Trois couches : un host frontend, un core en Rust, et PostgreSQL. Les modules se branchent dessus comme des processus autonomes.

Vue d'ensemble #

Frontend host (React 19) ── import map ──► modules chargés au runtime (/modules/<id>/entry.js)
        │
Core (Rust / Axum)  ── reverse-proxy + events + auth + storage ──►  modules (processus séparés)
        │
PostgreSQL 16 (schéma par module · LISTEN/NOTIFY · jobs SKIP LOCKED)

Le core #

Le core (crate kubuno-core) gère l'authentification (JWT + refresh tokens), le stockage (trait StorageBackend : local ou S3), les événements temps réel, le WebSocket par utilisateur et le reverse-proxy vers les modules. Il expose des registries partagés que les modules alimentent côté frontend.

Les ports #

Le core écoute sur 8080. Chaque module a un port fixe sur 127.0.0.1 :

ModulePortModulePort
drive3101contacts3110
calendar3102mail3111
photos3103code3112
notes3104media3113
office3105keestore3114
paintsharp3106maps3115
jarvis3107tasks3116
forms3108forum3117
chat3109flow3118

PostgreSQL, triple emploi #

  • Base de données — un schéma dédié par module, aucune table en dehors.
  • Bus d'événements — via LISTEN/NOTIFY.
  • File de jobs — via SELECT … FOR UPDATE SKIP LOCKED.
Astuce

Pas de Redis, pas de broker externe : PostgreSQL suffit. C'est un choix d'architecture délibéré.