Sobre el proyecto
Bento es una suite ofimática de código abierto cuya idea definitoria es que el documento es el software: una presentación es un único archivo HTML autocontenido que lleva su propio visor, presentador y editor. Ábralo en cualquier navegador moderno y es el editor; al guardar, reescribe su propio bloque de datos. La primera aplicación, Bento Slides, es una alternativa a PowerPoint distribuida como un archivo de ~560 KB (Bento_Slides.bento.html) sin cuenta ni instalador.
Capacidades clave descritas en el README:
- Portabilidad de un solo archivo: la presentación, fuentes, imágenes, gráficos, animaciones y el editor completo viajan juntos; los datos del documento residen en un bloque JSON plano y legible cerca del inicio del archivo, por lo que son inspeccionables y editables por herramientas externas.
- Autoguardado: el archivo reescribe su propio bloque de datos al guardar mediante la API File System Access, con una alternativa de descarga.
- Presentación morph: los elementos que comparten un id se animan entre diapositivas en posición, tamaño, color y degradados, calculados desde el modelo del documento en lugar del DOM.
- Colaboración en vivo: cifrado de extremo a extremo (AES-GCM) con claves almacenadas en el archivo, no en un servidor; un relé de sincronización opcional a ciegas almacena solo texto cifrado. La fusión usa un CRDT propio con fusión de texto a nivel de carácter, probado con fuzzing mediante un script de prueba de convergencia.
- Gráficos integrados: barras, líneas, circulares y dispersión dibujados por un motor sin dependencias, interactivos durante las presentaciones, con morphing de datos entre tipos de gráficos.
- Formato amigable para IA: como el documento es JSON plano, los agentes basados en archivos (Claude Code, Cursor, Aider) pueden editar .bento.html en su lugar, y los chatbots pueden hacer round-trip del JSON mediante window.bento.loadDoc. Está documentado que funciona sin conexión con modelos locales de peso abierto vía Ollama, llama.cpp o LM Studio.
- Autoactualizaciones firmadas: los lanzamientos están firmados con ECDSA y se ofrecen en la aplicación; actualizar escribe un nuevo archivo mientras el anterior permanece como respaldo.
- Otras características listadas: vista de presentador, comentarios, diseños, estados interactivos ocultos, revelado al pasar el cursor, rutas de movimiento, exportación a PDF, tamaños de página y 8 idiomas de interfaz.
La arquitectura se resume como un modelo de documento en TypeScript (slides/src/model.ts) con un único renderizador usado para el lienzo del editor, miniaturas y modo presentación; Reveal.js impulsa la navegación; animación, gráficos y colaboración son componentes propios. El shell se comprime a aproximadamente 560 KB con el bloque de documento en texto plano.
El README es transparente sobre el modelo de seguridad: las claves de colaboración se generan del lado del cliente y viven solo en el archivo, por lo que poseer el archivo equivale a ser miembro y la rotación de claves es la revocación; el relé ve texto cifrado, tiempos de conexión y un hash de la clave de sala; los nombres de presencia son afirmaciones, no pruebas; las comprobaciones de actualización obtienen un manifiesto estático y verifican firma, hash y monotonicidad de versión. Limitaciones conocidas incluyen deshacer por instantáneas durante colaboración en vivo y una experiencia de edición orientada a escritorio, con teléfonos más adecuados para ver y presentar.
Compilar desde el código fuente requiere Node 20+ y npm; la aplicación es una compilación de página única sin backend. Los comandos incluyen npm run dev, npm run build:single y un script de prueba de convergencia CRDT. Los lanzamientos se cortan localmente para que la clave de firma permanezca en la máquina del mantenedor. La documentación cubre arquitectura, la especificación normativa del formato bento/slides, diseño de colaboración y modelo de amenazas, y una guía para agentes. La hoja de ruta nombra futuras aplicaciones: bento/spaces (notas), bento/dash (hojas de cálculo y tablas) y bento/vault, cada una como su propio distribuible .bento.html. Todo está bajo licencia MIT, con componentes de runtime integrados bajo MIT y tipografías incrustadas bajo OFL.
Comments
0 Rating appears after 10 ratings
Sign in to join the discussion.