প্রকল্প সম্পর্কে
Tahti Player হলো Tahti-র শোনা ও শিল্পী-স্টুডিও ক্লায়েন্ট; Tahti হলো স্বাধীন শিল্পীদের জন্য একটি ফিনিশ অলাভজনক, চ্যানেল-প্রথম ব্রডকাস্টিং প্ল্যাটফর্ম। এটি Nuclear-এর বিনামূল্যের, বিজ্ঞাপনমুক্ত প্লেয়ার UI (React এবং একটি শেয়ার্ড ডিজাইন সিস্টেম)-এর উপর তৈরি এবং বর্তমানে beta.tahti.live-এ Vite SPA হিসেবে সরবরাহ করা হয়, যা api.tahti.live-এ লাইভ প্রোডাকশন API-র সাথে কথা বলে। রিপোজিটরিতে দুটি প্রধান অংশ রয়েছে: @tahti-player/tahti-web, প্রোডাকশন apps/web-এ স্থানান্তরের প্রার্থী হিসেবে অভিপ্রেত Nuclear-ভিত্তিক শোনা ও স্টুডিও ওয়েব ক্লায়েন্ট; এবং Tahti Player, অ্যাড-অন ও শেয়ার্ড UI প্যাকেজসহ Tauri ডেস্কটপ অ্যাপ।
ওয়েব ক্লায়েন্ট আলাদা কোনো ব্যাকএন্ড নয়; এটি প্রোডাকশনের মতো একই পাবলিক Tahti API, চ্যাট পরিষেবা এবং মিডিয়া CDN ব্যবহার করে। ঘোষিত লক্ষ্য হলো কিউ, থিম এবং কীবোর্ড-বান্ধব ক্রোমসহ একটি প্লেয়ার-নেটিভ শেল, আর এমন একটি স্টুডিও যা সাধারণ SaaS ড্যাশবোর্ডের বদলে লাইভে যাওয়ার জন্য একটি ডেস্কের মতো মনে হয়। Windows, Mac এবং Linux-এর জন্য নেটিভ ক্লায়েন্ট উপলব্ধ এবং সেগুলো ব্যবস্থাপনা, মেটাডেটা সমৃদ্ধকরণ ও সাধারণ সঙ্গীত ব্যবস্থাপনার জন্য নিজের ট্র্যাক লোড করা সমর্থন করে।
শ্রোতা ফিচারের মধ্যে রয়েছে চ্যানেল ডিরেক্টরি, লাইভ চ্যানেল HLS ও আর্কাইভ রিপ্লে, 24/7 Tahti Radio স্ট্রিম, প্রতিক্রিয়া এবং সাবস্ক্রাইবার গেটিংসহ Centrifugo ওয়েবসকেটে চ্যানেল চ্যাট, শিল্পী প্রোফাইল, সংগ্রহ ও অ্যালবাম, স্মার্ট লিংক, এম্বেড, ভেন্যু ডিরেক্টরি, গভর্ন্যান্স প্রস্তাব, স্বচ্ছতা প্রতিবেদন এবং প্ল্যাটফর্ম স্ট্যাটাস। অ্যাকাউন্ট ফিচারের মধ্যে রয়েছে ফলো, ফেভারিট, শোনার ইতিহাস, প্লেলিস্টে যোগ করা, Stripe Checkout-এর মাধ্যমে ফ্যান সাবস্ক্রিপশন, DM, সদস্য গভর্ন্যান্স ভোট এবং ব্যক্তিগত লাইব্রেরি।
শিল্পী স্টুডিও ফিচারের মধ্যে রয়েছে OBS/RTMP ও মাল্টিস্ট্রিমসহ Go Live উইজার্ড, আপলোড, রিলিজ ও অ্যালবাম ডিজাইনারসহ মিউজিক লাইব্রেরি, প্লেলিস্ট ও সংগ্রহ, ট্রিম ও মাস্টার করার জন্য প্রো অডিও এডিটর, শিডিউলিং ও 24/7 প্রোগ্রাম, রেডিও স্লট ও শো, ভিজ্যুয়াল প্রিসেট ও লেয়ারসহ চ্যানেল ডিজাইনার, পরিসংখ্যান, নিউজলেটার আপডেট, ফ্যান টিয়ার ও Stripe Connect পেআউটের মাধ্যমে আয়, Revelator-এর মাধ্যমে বিতরণ, চ্যানেল মডারেটর এবং সাউন্ড শেয়ার লিংক। একটি বোর্ড-অ্যাডমিন এলাকা isBoard দ্বারা গেট করা ২২টি অ্যাডমিন পৃষ্ঠ প্রকাশ করে, যার মধ্যে রয়েছে ড্যাশবোর্ড, মডারেশন কিউ, স্ট্রিম তদারকি, আর্থিক, গভর্ন্যান্স, অনুদান, AGM, i18n, ফাইল ও স্টোরেজ, ঘোষণা, ফিচার অনুরোধ, সহায়তা এবং রেডিও জমা।
ডেস্কটপ Tauri অ্যাপটি সার্চ, লোকাল লাইব্রেরি, অ্যাড-অন, থিম এবং রিমোট কন্ট্রোলসহ একটি পূর্ণাঙ্গ Nuclear-ভিত্তিক প্লেয়ার। এতে আপস্ট্রিম Nuclear থেকে সংরক্ষিত একটি অন্তর্নির্মিত MCP সার্ভার রয়েছে, যা AI এজেন্টকে প্লেব্যাক, কিউ, ফেভারিট, প্লেলিস্ট এবং প্রোভাইডার নিয়ন্ত্রণ করতে দেয়; এটি 8800 পোর্টে localhost-এ বাইন্ড করে এবং ডেস্কটপ-শুধু হিসেবে নথিভুক্ত, কারণ CDN থেকে পরিবেশিত ওয়েব SPA লোকাল কন্ট্রোল-প্লেন ব্রিজ হোস্ট করতে পারে না।
ডেভেলপারদের জন্য প্রকল্পটি বিটাতে লাইভ API-তে একটি same-origin /tahti-api প্রক্সি, পাবলিক OpenAPI/Scalar ডকুমেন্টেশন এবং VITE_FORCE_MOCK=1 সহ একটি অফলাইন মক মোড দেয়, যেখানে fetcher-গুলো কোনো নেটওয়ার্ক কল ছাড়াই ফিক্সচার ডেটায় শর্ট-সার্কিট করে। স্ট্যাকে pnpm ও Turborepo ব্যবহার করা হয়, Node 24 এবং pnpm 10.x প্রয়োজন, এবং শুধু ডেস্কটপ অ্যাপের জন্য Tauri 2 সিস্টেম ডিপেন্ডেন্সিসহ Rust 1.77.2 বা তার নতুন সংস্করণ প্রয়োজন। কমান্ডগুলোর মধ্যে ওয়েব ক্লায়েন্ট ও ডেস্কটপ অ্যাপের ডেভ সার্ভার, Storybook, বিল্ড, lint, type-check এবং টেস্ট অন্তর্ভুক্ত। API প্রক্সি টার্গেট, API বেস URL, মক মোড, Centrifugo ওয়েবসকেট, hCaptcha সাইট কী এবং বাইন্ড হোস্টের জন্য পরিবেশ ভেরিয়েবলের মাধ্যমে কনফিগারেশন করা হয়। বিটা সাইটের জন্য ডিপ্লয়মেন্ট হেল্পার রয়েছে এবং scripts-এর অধীনে রিলিজ, Flatpak ও AUR হেল্পার রয়েছে।
README স্ট্যাটাস সম্পর্কে স্পষ্ট: বিটা লাইভ ডেটায় মূল শ্রোতা ও স্টুডিও প্রবাহগুলো কভার করে, তবে কিছু প্রোডাকশন পৃষ্ঠ Nuclear UI-তে আংশিক বা স্কোপের বাইরে থাকতে পারে, যেমন বোর্ড অ্যাডমিনের গভীরতা, পূর্ণ SEO/SSR এবং কিছু সেটিংস। ফিচার সমতা ও অবশিষ্ট ঘাটতি FEATURES.md এবং FEATURES-REMAINING.md-তে ট্র্যাক করা হয়, আর স্থানান্তর পরিকল্পনা রয়েছে CUTOVER.md-তে। প্রকল্পটি Nuclear আপস্ট্রিমের সাথে মিল রেখে AGPL-3.0-only লাইসেন্সপ্রাপ্ত এবং AGENTS.md-তে এজেন্ট নির্দেশনা এবং .agents/skills-এর অধীনে স্কিল অন্তর্ভুক্ত করে।
Comments
0 Rating appears after 10 ratings
Sign in to join the discussion.