Aller au contenu

Développer sur Brainstorm

Brainstorm est un shell de bureau qui héberge des applications — et rien d’autre. Notes, Base de données, Graphe, Calendrier, tout le produit est constitué d’applications qui s’exécutent au-dessus d’une couche d’objets partagée. Le même modèle vous est ouvert : une application que vous construisez est un pair des applications intégrées, avec le même accès aux données du coffre et la même place dans le lanceur.

Cette section est le hub développeur pour la construction de ces applications. Elle suppose que vous avez lu les Concepts — en particulier Applications et permissions et Objets — car les garanties de la plateforme sont son API.

Une application est une petite application web — HTML, JavaScript, CSS — qui s’exécute dans son propre renderer en sandbox. Elle est accompagnée d’un manifeste qui déclare qui elle est, quels types de données elle possède et quelles capacités elle nécessite. Le shell l’installe, lui donne une fenêtre et arbitre chaque requête qu’elle adresse au système.

Trois propriétés définissent le modèle :

  • En sandbox. Une application ne peut pas atteindre d’elle-même le système de fichiers, le réseau ou une autre application. Elle ne peut faire que ce que vous avez accordé via le registre de capacités. C’est la frontière de sécurité — c’est ce qui rend sûr le fait d’exécuter des applications tierces, et plus tard des agents autonomes, au-dessus de vos données les plus importantes.
  • Contrôlée par capacités. Chaque action sensible correspond à une capacité nommée que l’application a déclarée et que vous avez approuvée. Rien n’est ambiant ; les vérifications échouent en position fermée. Voir Capacités.
  • Au-dessus d’objets partagés. Les applications ne possèdent pas de silos privés. Elles lisent et écrivent des objets typés dans le coffre, de sorte que la note que vous écrivez dans une application est le même objet qu’une autre application peut lier, afficher dans un calendrier ou placer sur un graphe.

Chaque application Brainstorm est une application React construite sur une boîte à outils partagée :

  • @brainstorm/sdk — la bibliothèque de composants et d’utilitaires : menus, popovers, icônes, pickers, UI de propriétés, recherche, rechercher-et-remplacer, formatage et le thème du chrome d’application. Consultez le SDK et runtime avant d’écrire quoi que ce soit ; si une primitive existe, vous l’importez au lieu de la reconstruire.
  • @brainstorm/react-yjs — la couche de réactivité. Les listes d’objets en direct et les documents collaboratifs passent par des hooks comme useVaultEntities et useYDoc. Vous ne construisez jamais vous-même une boucle de changement.
  • window.brainstorm — le runtime que le shell injecte dans chaque application : votre identité, vos capacités accordées, votre contexte de lancement et les espaces de noms de services (entities, files, intents, storage, search, …) que vous appelez pour travailler.

Une application typique se compose de quatre choses :

  1. Un manifeste déclarant l’application, les types d’objets qu’elle possède et les capacités qu’elle nécessite.
  2. Une UI React montée dans la fenêtre de l’application, utilisant le chrome d’en-tête standard et les composants du SDK.
  3. Accès aux données — lire et écrire des entités, synchroniser du texte enrichi via Yjs, stocker un état app-privé.
  4. Intégration — s’enregistrer comme opener pour un type, envoyer des intents, contribuer des widgets, de sorte que votre application se compose avec le reste de l’espace de travail au lieu de rester isolée.