প্রকল্প সম্পর্কে
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 এক্সপোর্ট, পেজ সাইজ এবং ৮টি UI ভাষা।
আর্কিটেকচার সংক্ষেপে বলা হয়েছে: একটি TypeScript ডকুমেন্ট মডেল (slides/src/model.ts) এবং একটি একক রেন্ডারার যা এডিটর ক্যানভাস, থাম্বনেইল ও প্রেজেন্ট মোডের জন্য ব্যবহৃত হয়; Reveal.js নেভিগেশন চালায়; অ্যানিমেশন, চার্ট ও সহযোগিতা ইন-হাউস কম্পোনেন্ট। শেলটি প্রায় 560 KB-তে কমপ্রেস হয়, ডকুমেন্ট ব্লক প্লেইনটেক্সট হিসেবে থাকে।
README নিরাপত্তা মডেল সম্পর্কে স্পষ্ট: সহযোগিতার কী ক্লায়েন্ট-সাইডে তৈরি হয় এবং শুধু ফাইলে থাকে, তাই ফাইলটির দখলই সদস্যপদ এবং কী রোটেশনই রিভোকেশন; রিলে সাইফারটেক্সট, সংযোগের সময় এবং রুম কী-র একটি হ্যাশ দেখে; প্রেজেন্স নাম প্রমাণ নয় বরং দাবি; আপডেট চেক একটি স্ট্যাটিক ম্যানিফেস্ট ফেচ করে এবং স্বাক্ষর, হ্যাশ ও ভার্সন মনোটোনিসিটি যাচাই করে। পরিচিত ট্রেড-অফগুলোর মধ্যে রয়েছে লাইভ সহযোগিতার সময় স্ন্যাপশট-ভিত্তিক আনডু এবং ডেস্কটপ-প্রথম এডিটিং অভিজ্ঞতা, ফোনে দেখা ও প্রেজেন্ট করার জন্য বেশি উপযোগী।
সোর্স থেকে বিল্ড করতে Node 20+ এবং npm প্রয়োজন; অ্যাপটি একটি সিঙ্গেল-পেজ বিল্ড, কোনো ব্যাকএন্ড নেই। কমান্ডগুলোর মধ্যে রয়েছে npm run dev, npm run build:single এবং একটি CRDT কনভার্জেন্স টেস্ট স্ক্রিপ্ট। রিলিজ লোকালি তৈরি হয়, তাই সাইনিং কী মেইনটেইনারের মেশিনেই থাকে। ডকুমেন্টেশনে আর্কিটেকচার, আদর্শ bento/slides ফরম্যাট স্পেক, সহযোগিতা ডিজাইন ও থ্রেট মডেল এবং একটি এজেন্ট গাইড অন্তর্ভুক্ত। রোডম্যাপে ভবিষ্যৎ অ্যাপের নাম রয়েছে: bento/spaces (নোট), bento/dash (শিট ও টেবিল) এবং bento/vault, প্রতিটি নিজস্ব .bento.html ডিস্ট্রিবিউটেবল হিসেবে। সবকিছু MIT-লাইসেন্সপ্রাপ্ত, বান্ডল করা রানটাইম কম্পোনেন্ট MIT-এর অধীনে এবং এমবেডেড টাইপফেস OFL-এর অধীনে।
Comments
0 Rating appears after 10 ratings
Sign in to join the discussion.