Skip to content

Repository files navigation

Muiwatch

Arkadaşınla aynı videoyu, aynı anda izle. Sohbet, ses ve görüntü doğrudan iki bilgisayar arasında akar — sunucudan yalnızca "tanışma" geçer.


Ne yapar

  • Oda aç, kodu ver. Altı karakterlik davet kodu; hesap yok, kayıt yok.
  • Birlikte izle. Bir YouTube adresi yapıştırılır, iki tarafta aynı anda açılır. Oynat / duraklat / ileri sarma karşıya aktarılır, kayan pozisyon otomatik hizalanır.
  • Konuş. P2P sesli/görüntülü sohbet ve yazışma.
  • Kontrolü devret. Video kontrolü karşı tarafa verilebilir, ya da o isteyebilir.

Neden sunucu yok

Muiwatch'ın tek sunucusu bir signaling sunucusu: iki client'ın birbirini bulup WebRTC bağlantısı kurmasına aracılık ediyor, sonra devreden çıkıyor.

Sohbet mesajları, video pozisyonu, ses ve görüntü hiçbir zaman sunucudan geçmiyor ve hiçbir yere kaydedilmiyor. Sunucunun tuttuğu tek şey bellekte duran "hangi peer hangi odada" listesi; süreç yeniden başlarsa o da yok oluyor.

Bunun bedeli de var, gizlemiyoruz: TURN sunucusu yok (sadece STUN). Bu, symmetric NAT arkasındaki bazı kullanıcı çiftlerinin bağlanamayacağı anlamına geliyor. Uygulama o durumda sessizce takılmıyor, açık bir hata gösteriyor. Ayrıntı: docs/ARCHITECTURE.md.

Kurulum

Gerekenler: Node.js 22+, Rust (yalnız masaüstü paketi için).

npm install
cd server && npm install && cd ..

Çalıştırma

Signaling sunucusu (ayrı terminal):

cd server && npm run dev

Uygulama:

npm run tauri dev

Tarayıcıda geliştirmek için npm run dev yeter. İki sekme açıp tek makinede iki peer denemek en hızlı yol — ama gerçek ağ davranışı (NAT, gecikme, echo cancellation) ancak iki ayrı cihazda görülür.

Signaling adresini değiştirmek için .env.example.env.local olarak kopyalayın.

Testler

npm test              # istemci: protokol, senkron, URL çözümleme
cd server && npm test # sunucu: oda defteri, davet kodu

Yapı

src/            İstemci (React + TypeScript)
  lib/          Protokol, senkron motoru, WebRTC oturumu, YouTube, medya
  hooks/        Oda orkestrasyonu
  components/   Arayüz
server/         Signaling sunucusu (Node + Socket.io, Fly.io)
src-tauri/      Masaüstü kabuğu (Tauri v2)
docs/           Mimari kararlar — kod yazmadan önce okunacak yer

Durum

Faz 0 (altyapı), Faz 1 (sohbet + sesli/görüntülü) ve Faz 2 (YouTube senkronu) kodlandı. Co-browsing (Faz 3) ve DRM'li platformlar (Faz 4) henüz yok. Ayrıntılı durum: docs/ROADMAP.md.

Lisans

Apache-2.0. Outfit yazı tipi SIL Open Font License altında (src/assets/fonts/LICENSE-OFL.txt).


Mui ailesinin bir parçası — Muiget · Muivly · Muifly · Muitoon · MuiLabs

About

Arkadasinla ayni videoyu ayni anda izle — P2P watch party + co-browsing. Sunucudan yalnizca el sikisma gecer. Tauri v2 + React + WebRTC.

Topics

Resources

Stars

0 stars

Watchers

0 watching

Forks

Releases

Packages

Contributors

Languages