इस प्रोजेक्ट के बारे में

Bento एक ओपन-सोर्स ऑफिस सूट है जिसका मूल विचार यह है कि दस्तावेज़ ही सॉफ्टवेयर है: एक प्रस्तुति एक ही स्व-निहित HTML फ़ाइल है जो अपने स्वयं के दर्शक, प्रस्तुतकर्ता और संपादक को ले जाती है। इसे किसी भी आधुनिक ब्राउज़र में खोलें और यह संपादक है; सहेजें, और यह अपने स्वयं के डेटा ब्लॉक को फिर से लिखता है। पहला ऐप, Bento Slides, एक PowerPoint विकल्प है जो एक ~560 KB फ़ाइल (Bento_Slides.bento.html) के रूप में वितरित किया जाता है, जिसमें कोई खाता या इंस्टॉलर नहीं है। README में वर्णित प्रमुख क्षमताएँ: - एक-फ़ाइल पोर्टेबिलिटी: डेक, फ़ॉन्ट, चित्र, चार्ट, एनिमेशन और पूर्ण संपादक एक साथ यात्रा करते हैं; दस्तावेज़ डेटा फ़ाइल के शीर्ष के पास एक सादे, पठनीय JSON ब्लॉक में रहता है, इसलिए यह बाहरी टूल द्वारा निरीक्षण और संपादन योग्य है। - स्व-सहेजना: फ़ाइल सहेजने पर File System Access API के माध्यम से अपने स्वयं के डेटा ब्लॉक को फिर से लिखती है, जिसमें डाउनलोड फ़ॉलबैक होता है। - मॉर्फ प्रस्तुति: एक ही id साझा करने वाले तत्व स्लाइड के बीच स्थिति, आकार, रंग और ग्रेडिएंट में एनिमेट होते हैं, जो DOM के बजाय दस्तावेज़ मॉडल से गणना किए जाते हैं। - लाइव सहयोग: एंड-टू-एंड एन्क्रिप्शन (AES-GCM) जिसमें कुंजियाँ फ़ाइल में संग्रहीत होती हैं, सर्वर पर नहीं; एक वैकल्पिक ब्लाइंड सिंक रिले केवल सिफरटेक्स्ट संग्रहीत करता है। विलय एक इन-हाउस CRDT का उपयोग करता है जिसमें वर्ण-स्तरीय पाठ विलय होता है, जिसे एक अभिसरण परीक्षण स्क्रिप्ट द्वारा फ़ज़-परीक्षण किया जाता है। - अंतर्निहित चार्ट: बार, लाइन, पाई और स्कैटर एक निर्भरता-मुक्त इंजन द्वारा खींचे जाते हैं, प्रस्तुतियों के दौरान इंटरैक्टिव होते हैं, चार्ट प्रकारों के बीच डेटा मॉर्फिंग के साथ। - AI-अनुकूल प्रारूप: क्योंकि दस्तावेज़ सादा JSON है, फ़ाइल-आधारित एजेंट (Claude Code, Cursor, Aider) .bento.html को जगह में संपादित कर सकते हैं, और चैटबॉट window.bento.loadDoc के माध्यम से JSON को राउंड-ट्रिप कर सकते हैं। यह Ollama, llama.cpp या LM Studio के माध्यम से स्थानीय ओपन-वेट मॉडल के साथ ऑफ़लाइन काम करने के लिए प्रलेखित है। - हस्ताक्षरित स्व-अपडेट: रिलीज़ ECDSA-हस्ताक्षरित हैं और ऐप में पेश किए जाते हैं; अपडेट एक नई फ़ाइल लिखता है जबकि पुरानी रोलबैक के रूप में रहती है। - सूचीबद्ध अन्य विशेषताएँ: स्पीकर व्यू, टिप्पणियाँ, लेआउट, छिपी हुई इंटरैक्टिव अवस्थाएँ, होवर रिवील, मोशन पथ, PDF निर्यात, पृष्ठ आकार और 8 UI भाषाएँ। आर्किटेक्चर को एक TypeScript दस्तावेज़ मॉडल (slides/src/model.ts) के रूप में संक्षेपित किया गया है जिसमें संपादक कैनवास, थंबनेल और प्रस्तुत मोड के लिए उपयोग किया जाने वाला एकल रेंडरर है; Reveal.js नेविगेशन चलाता है; एनिमेशन, चार्ट और सहयोग इन-हाउस घटक हैं। शेल दस्तावेज़ ब्लॉक को सादे पाठ के रूप में छोड़कर लगभग 560 KB तक संपीड़ित होता है। README सुरक्षा मॉडल के बारे में स्पष्ट है: सहयोग कुंजियाँ क्लाइंट-साइड बनाई जाती हैं और केवल फ़ाइल में रहती हैं, इसलिए फ़ाइल का कब्ज़ा सदस्यता के बराबर है और कुंजी रोटेशन निरसन है; रिले सिफरटेक्स्ट, कनेक्शन समय और रूम कुंजी का हैश देखता है; उपस्थिति नाम दावे हैं, प्रमाण नहीं; अपडेट जाँच एक स्थिर मेनिफेस्ट लाती है और हस्ताक्षर, हैश और संस्करण मोनोटोनिसिटी सत्यापित करती है। ज्ञात ट्रेड-ऑफ में लाइव सहयोग के दौरान स्नैपशॉट-आधारित पूर्ववत और डेस्कटॉप-प्रथम संपादन अनुभव शामिल है, जिसमें फ़ोन देखने और प्रस्तुत करने के लिए बेहतर हैं। स्रोत से निर्माण के लिए Node 20+ और npm की आवश्यकता होती है; ऐप एक सिंगल-पेज बिल्ड है जिसमें कोई बैकएंड नहीं है। कमांड में npm run dev, npm run build:single और एक CRDT अभिसरण परीक्षण स्क्रिप्ट शामिल हैं। रिलीज़ स्थानीय रूप से काटी जाती हैं ताकि हस्ताक्षर कुंजी अनुरक्षक की मशीन पर रहे। दस्तावेज़ीकरण आर्किटेक्चर, normative bento/slides प्रारूप विनिर्देश, सहयोग डिज़ाइन और खतरा मॉडल, और एक एजेंट गाइड को कवर करता है। रोडमैप भविष्य के ऐप्स का नाम देता है: bento/spaces (नोट्स), bento/dash (शीट्स और टेबल) और bento/vault, प्रत्येक अपने स्वयं के .bento.html वितरण योग्य के रूप में। सब कुछ MIT-लाइसेंस प्राप्त है, जिसमें बंडल किए गए रनटाइम घटक MIT के तहत और एम्बेडेड टाइपफेस OFL के तहत हैं।