حصہ
ٹیکنالوجی
حقیقی Dueli سٹیک دو پرتوں میں: عام زبان میں وضاحت اور انجینئرنگ کا منظر۔
یہ صفحہ بتاتا ہے کہ Dueli واقعی کن ٹیکنالوجیز استعمال کرتا ہے، دو پرتوں میں: سب کے لیے عام زبان کا منظر اور ماہرین کے لیے انجینئرنگ کا منظر۔ کوئی ٹیکنالوجی تبھی فہرست میں ہے جب موجودہ کوڈ اسے استعمال کرتا ہو۔
عام الفاظ میں
Dueli براؤزر میں Cloudflare کے عالمی نیٹ ورک پر چلتا ہے۔ دو مسابقے اپنے اپنے آلات کے درمیان لائیو ویڈیو کال میں ملتے ہیں (WebRTC peer-to-peer)؛ جب نیٹ ورک براہِ راست راستہ روکے تو TURN ریلے رابطہ کے گذرنے میں مدد کرتا ہے۔
مقابلے کے دوران براؤزر دونوں کیمروں کی فوٹو ایک تصویر میں جوڑتا ہے اور اسے مختصر 5 سیکنڈ کے چنکوں میں ریکارڈ کرتا ہے۔ چنک بننے کے ساتھ اپلوڈ ہوتے ہیں، ترتیب سے چلائے جا سکتے ہیں، اور میچ ختم ہونے کے بعد مکمل ریپلے میں جمع ہو جاتے ہیں۔
ریکارڈ شدہ مقابلے MP4 فائل کے طور پر ڈاؤن لوڈ ہو سکتے ہیں۔ جب ریکارڈنگ کو تبدیلی چاہیے ہو، تبدیلی FFmpeg.wasm کے ساتھ زائر کے براؤزر کے اندر ہوتی ہے، تاکہ فائل کسی بیرونی کنورژن سروس کو نہ بھیجی جائے۔
پلیٹ فارم کا ڈیٹا D1 میں رہتا ہے، صفحات اور APIs بلند Cloudflare پر Hono اور TypeScript سے بنے ہیں، اور انٹرفیس Tailwind CSS استعمال کرتا ہے۔ لائیو اپ ڈیٹس SSE اور polling سے آتے ہیں۔
انجینئرز کے لیے
رن ٹائم: Cloudflare Pages/Workers پر Hono 4، TypeScript کے ساتھ۔ D1 (SQLite) ڈیٹابیس ہے۔ Vite ورکر بنڈل بناتا ہے، Tailwind CSS 4 انٹرفیس کو سٹائل دیتا ہے، اور esbuild براؤزر کے اندراج نکات کو بنڈل کرتا ہے۔
لائیو میڈیا: براؤزر RTCPeerConnection میزبان اور حریف کے درمیان WebRTC لے جاتا ہے۔ ICE سرورز ہر سیشن کے لیے GET /api/signaling/ice-servers سے جاری ہوتے ہیں؛ Cloudflare Calls TURN (TURN_TOKEN_ID اور TURN_API_TOKEN) یا خود میزبان coturn (TURN_URL اور TURN_SECRET) ریلے کر سکتے ہیں، اور جب کوئی ترتیب نہ دیا گیا ہو STUN-only fallback۔
ریکارڈنگ: کینوس کمپوزٹر دونوں فوٹو بناتا ہے، اور MediaRecorder ہر 5 سیکنڈ میں ایک چنک دیتا ہے۔ میزبان ہر چنک کو POST /api/chunks/register پر رجسٹر کرتا ہے (مقابلے، ترتیب اور بائٹ حد سے جکڑی مختصر مدت کی یک بار کلید)، اسے اپلوڈ کرتا ہے، GET /verify سے توثیق کرتا ہے اور POST /receipt رپورٹ کرتا ہے۔ پلے بیک GET /api/chunks/playlist/:id پڑھتا ہے، اور موجودہ فائنلائز مرحلہ VOD تیار کرتا ہے۔
ڈاؤن لوڈز: @ffmpeg/core 0.12.10 خود میزبان براؤزر ورکر میں MP4 تبدیلی کے لیے چلتا ہے، اور ان ریکارڈنگز کے لیے ساختی ریمکس راستہ جو پہلے ہی MP4 سے مطابقت رکھتی ہیں۔ پیش رفت اور میموری کی حدیں کلائنٹ سروس میں سنبھالی جاتی ہیں۔
ریئل ٹائم: GET /api/sse کے ذریعے SSE لائیو اپ ڈیٹس لے جاتا ہے، اور سگنلنگ HTTP polling استعمال کرتی ہے؛ پروڈکشن راستہ WebSocket استعمال نہیں کرتا۔
معیار: Vitest یونٹ اور UI معاہدے ڈھکتا ہے، اور Playwright براؤزر کے سرے سے سرے تک بہائے ڈھکتا ہے۔ Markdown دستاویزات marked سے رینڈر ہوتی ہیں، اور PostCSS اور Autoprefixer CSS پائپ لائن مکمل کرتے ہیں۔
اس ریپو میں موجود سٹیک
- Cloudflare Pages / Workers میزبانی اور سرور رن ٹائم
- Cloudflare D1 (SQLite) ایپلیکیشن ڈیٹابیس
- Hono 4 HTTP راستے، صفحات اور API
- TypeScript 5 سرور اور کلائنٹ کا ٹائپ شدہ سورس
- Tailwind CSS 4 + PostCSS + Autoprefixer انٹرفیس سٹائلنگ اور CSS پائپ لائن
- Vite 7 + esbuild ورکر بنڈل اور براؤزر کے اندراج نکات
- WebRTC (RTCPeerConnection) + TURN/STUN شرکتا کے درمیان لائیو آڈیو اور ویڈیو
- Canvas compositor + MediaRecorder براؤزر میں 5 سیکنڈ کے ریکارڈ شدہ چنک
- FFmpeg.wasm (@ffmpeg/core 0.12.10) براؤزر کے اندر MP4 تبدیلی اور ڈاؤن لوڈ
- marked 17 زیرِ انتظام دستاویزات کے لیے Markdown رینڈرنگ
- Vitest 5 یونٹ اور UI ٹیسٹ سوٹ
- Playwright سرے سے سرے تک براؤزر ٹیسٹ
- Wrangler 4 Cloudflare ترقی اور تعینات کاری کے اوزار
- SSE + HTTP polling میڈیا راستے سے باہر لائیو اپ ڈیٹس
یہ فہرست صرف اسی چیز تک محدود ہے جو package.json اور ریپو میں واقعی موجود ہے۔ یہ ٹیکنیکل وضاحت ہے، شراکت یا توثیق کا دعویٰ نہیں۔