প্রকল্প সম্পর্কে

Element Call হলো Matrix প্রোটোকলের উপর নির্মিত একটি ভিডিও কনফারেন্সিং অ্যাপ্লিকেশন, যা Element দ্বারা তৈরি। এটিকে একটি বিকেন্দ্রীভূত ও ফেডারেটেড ভিডিও কনফারেন্সিং সমাধান হিসেবে বর্ণনা করা হয়, যা MatrixRTC (MSC4143) ব্যবহার করে এবং LiveKit-কে ব্যাকএন্ড (MSC4195) হিসেবে নেয়। README-তে বর্ণিত মূল সক্ষমতাগুলো: - Matrix হোমসার্ভার জুড়ে বিকেন্দ্রীভূত ও ফেডারেটেড পরিচালনা, কোনো কেন্দ্রীয় কর্তৃপক্ষ ছাড়াই। - এন্ড-টু-এন্ড এনক্রিপ্টেড কল। - তিনটি ব্যবহার পদ্ধতি: স্বতন্ত্র ওয়েব অ্যাপ, Matrix ক্লায়েন্টে (Element Web, iOS ও Android-এ Element X) এমবেড করা উইজেট, এবং হোস্ট অ্যাপ্লিকেশনের ভেতরে মাউন্ট করার জন্য একটি পরীক্ষামূলক React কম্পোনেন্ট লাইব্রেরি। - WebRTC-ভিত্তিক, অংশগ্রহণকারীদের জন্য কোনো অতিরিক্ত সফটওয়্যার প্রয়োজন হয় না। - বড় মিটিংয়ের জন্য LiveKit SFU-এর মাধ্যমে স্কেলেবিলিটি। - হাত তোলা এবং ইমোজি রিঅ্যাকশনের মতো বৈশিষ্ট্য। ডিপ্লয়মেন্ট ও প্যাকেজিং: একটি সম্পূর্ণ প্যাকেজ স্ট্যাটিক ওয়েব পেজ হিসেবে স্বতন্ত্র ও উইজেট মোড সমর্থন করে; একটি এমবেডেড প্যাকেজ মেসেঞ্জার অ্যাপের সাথে বান্ডল করা উইজেট মোডের জন্য; একটি কম্পোনেন্ট প্যাকেজ (পরীক্ষামূলক) Element Call-কে React কম্পোনেন্ট হিসেবে বিল্ড করে। কম্পোনেন্ট বিল্ড তার স্টাইলকে তার রুট এলিমেন্টে সীমাবদ্ধ করে, লেআউটের জন্য কন্টেইনার কোয়েরি সমর্থন করে, ইংরেজি বান্ডল করে এবং অন্যান্য লোকেল চাহিদা অনুযায়ী লোড করে, এবং language ও theme প্রপ গ্রহণ করে। রেন্ডার করার আগে হোস্টকে initializeElementCall(config) কল করতে হবে, এবং একটি Matrix ক্লায়েন্ট, roomId, intent, ঐচ্ছিক config ও hostBridge প্রদান করতে হবে; হোস্ট একটি ref হ্যান্ডেলের মাধ্যমে join, hangUp ও setDeviceMute ইস্যু করে। প্যাকেজটি এখনো প্রকাশিত হয়নি এবং একটি git ডিপেন্ডেন্সি হিসেবে ইনস্টল করা হয়। সেলফ-হোস্টিং: একটি সেলফ-হোস্টিং গাইডের রেফারেন্স দেওয়া আছে। প্রতিটি ডিপ্লয়মেন্টের জন্য LiveKit সার্ভারের আকারে একটি MatrixRTC ট্রান্সপোর্ট প্রয়োজন। ট্রান্সপোর্ট ডিসকভারি GET /_matrix/client/unstable/org.matrix.msc4143/rtc/transports এন্ডপয়েন্ট ব্যবহার করে, যা livekit টাইপের rtc_transports এন্ট্রি ফেরত দেয়, যেখানে একটি livekit_service_url একটি MatrixRTC Authorization Service-এর দিকে নির্দেশ করে। ব্যাকএন্ড নির্বাচন: অংশগ্রহণকারীরা তাদের call member state ইভেন্টে org.matrix.msc4143.rtc_foci-এর মাধ্যমে আবিষ্কৃত ট্রান্সপোর্ট প্রস্তাব করে; LiveKit-এর জন্য যোগদানকারী প্রথম অংশগ্রহণকারী foci_preferred-এর মাধ্যমে ব্যাকএন্ড নির্ধারণ করে; এরপর authorization service LiveKit SFU WebSocket URL এবং একটি access JWT প্রদান করে। ডেভেলপমেন্ট: ডিপেন্ডেন্সির মধ্যে রয়েছে Node.js, Corepack, এবং ব্যাকএন্ডের জন্য Compose সহ Docker। ফ্রন্টএন্ড সেটআপে corepack enable, pnpm install, config/config.devenv.json থেকে কপি করা একটি লোকাল config, এবং pnpm dev ব্যবহার করা হয়। একটি docker-compose-dev.yml Synapse হোমসার্ভার, একটি MatrixRTC authorization service, LiveKit SFU, একটি localhost certificate authority এবং একটি TLS reverse proxy সহ একটি লোকাল স্ট্যাক চালু করে; এটি একটি টেস্ট সিক্রেট ব্যবহার করে এবং পাবলিক ইন্টারনেটে উন্মুক্ত করা যাবে না। টেস্টে Vitest (স্ন্যাপশট আপডেট করতে -u সহ) এবং Playwright ব্যবহার করা হয়, পোর্ট 3001-এ একটি কম্পোনেন্ট হার্নেস সহ। অনুবাদ Localazy-এর মাধ্যমে পরিচালিত হয়, এবং pnpm i18n চালিয়ে ও locales/en/app.json সম্পাদনা করে নতুন অনুবাদ কী যোগ করা হয়। লাইসেন্সিং: New Vector Ltd (Element) দ্বারা AGPL-3.0 অথবা একটি পরিশোধিত Element Commercial License-এর অধীনে দ্বৈত-লাইসেন্সকৃত।