À propos du projet

Bento est une suite bureautique open source dont l'idée fondatrice est que le document est le logiciel : une présentation est un unique fichier HTML autonome qui embarque sa propre visionneuse, son présentateur et son éditeur. Ouvrez-le dans n'importe quel navigateur moderne et il devient l'éditeur ; enregistrez, et il réécrit son propre bloc de données. La première application, Bento Slides, est une alternative à PowerPoint distribuée sous forme d'un seul fichier d'environ 560 Ko (Bento_Slides.bento.html), sans compte ni installateur. Principales capacités décrites dans le README : - Portabilité en un seul fichier : diaporama, polices, images, graphiques, animations et éditeur complet voyagent ensemble ; les données du document se trouvent dans un bloc JSON simple et lisible près du début du fichier, donc inspectables et modifiables par des outils externes. - Auto-enregistrement : le fichier réécrit son propre bloc de données lors de l'enregistrement via la File System Access API, avec un repli par téléchargement. - Présentation morph : les éléments partageant un id s'animent entre les diapositives en position, taille, couleur et dégradés, calculés à partir du modèle de document plutôt que du DOM. - Collaboration en direct : chiffrement de bout en bout (AES-GCM) avec des clés stockées dans le fichier, et non sur un serveur ; un relais de synchronisation aveugle optionnel ne stocke que le texte chiffré. La fusion utilise un CRDT maison avec fusion de texte au niveau des caractères, testé par fuzzing via un script de test de convergence. - Graphiques intégrés : barres, lignes, secteurs et nuages de points dessinés par un moteur sans dépendances, interactifs pendant les présentations, avec morphing des données entre types de graphiques. - Format adapté à l'IA : comme le document est du JSON simple, les agents basés sur fichiers (Claude Code, Cursor, Aider) peuvent modifier .bento.html sur place, et les chatbots peuvent faire des allers-retours du JSON via window.bento.loadDoc. Il est documenté comme fonctionnant hors ligne avec des modèles locaux à poids ouverts via Ollama, llama.cpp ou LM Studio. - Mises à jour automatiques signées : les versions sont signées en ECDSA et proposées dans l'application ; la mise à jour écrit un nouveau fichier tandis que l'ancien reste comme possibilité de retour arrière. - Autres fonctionnalités listées : vue présentateur, commentaires, dispositions, états interactifs masqués, révélations au survol, trajectoires de mouvement, export PDF, tailles de page et 8 langues d'interface. L'architecture est résumée comme un modèle de document en TypeScript (slides/src/model.ts) avec un moteur de rendu unique utilisé pour le canevas de l'éditeur, les vignettes et le mode présentation ; Reveal.js gère la navigation ; l'animation, les graphiques et la collaboration sont des composants maison. Le shell se compresse à environ 560 Ko, le bloc de document restant en texte clair. Le README est franc sur le modèle de sécurité : les clés de collaboration sont générées côté client et vivent uniquement dans le fichier, donc posséder le fichier équivaut à être membre et la rotation des clés constitue la révocation ; le relais voit le texte chiffré, le timing des connexions et un hachage de la clé de salle ; les noms de présence sont des déclarations plutôt que des preuves ; les vérifications de mise à jour récupèrent un manifeste statique et vérifient la signature, le hachage et la monotonie de version. Les compromis connus incluent un annulation basée sur des instantanés pendant la collaboration en direct et une expérience d'édition pensée d'abord pour ordinateur, les téléphones convenant mieux à la consultation et à la présentation. La compilation depuis les sources nécessite Node 20+ et npm ; l'application est une compilation en page unique sans backend. Les commandes incluent npm run dev, npm run build:single et un script de test de convergence CRDT. Les versions sont produites localement afin que la clé de signature reste sur la machine du mainteneur. La documentation couvre l'architecture, la spécification normative du format bento/slides, la conception de la collaboration et le modèle de menaces, ainsi qu'un guide pour agents. La feuille de route nomme de futures applications : bento/spaces (notes), bento/dash (feuilles et tableaux) et bento/vault, chacune comme son propre distribuable .bento.html. Tout est sous licence MIT, avec les composants d'exécution inclus sous MIT et les polices intégrées sous OFL.