Kendi reel havuzundan rastgele içerik çekip arkadaşlarla senkron şekilde izleme odaları kurabileceğin, sohbet (chat) destekli, hafif ve hızlı bir web uygulaması.
Demo: https://reel2gether.vercel.app
Repo: https://github.com/lumiboi/Reel-2-gether
- Rastgele Reel: Uygulamanın reel havuzundan tek tıkla rastgele içerik başlatma.
- Senkron Oynatma: Oda içindeki tüm kullanıcılar için play/pause/seek hareketleri eşzamanlıdır.
- Oda Sistemi: Oda oluşturma, odaya kod/link ile katılma.
- Sohbet (Chat): Oda içi gerçek zamanlı mesajlaşma.
- Host Kontrolleri: Oda sahibine özel yönetim (oynat, durdur, atla vb.).
- Mobil Uyum: Telefon, tablet ve masaüstünde akıcı deneyim.
Not: Özelliklerin bir kısmı geliştirme aşamasında olabilir. Aşağıdaki Yol Haritası bölümüne göz atın.
- Next.js + TypeScript – modern, hızlı, App Router yapısı
- Tailwind CSS – komponentleri hızlıca stillendirmek için
- Gerçek Zamanlı – (örnek) Firebase/Firestore veya WebSocket tabanlı senkronizasyon
- İsteğe Bağlı Yardımcı Scriptler – repo’da yer alan Python betikleri (örn. indirme/işleme iş akışları)
Projede
firebase.json,tailwind.config.mjs,eslint.config.mjs,tsconfig.jsongibi dosyalar bulunduğundan, geliştirme ortamında bu araçlar hazırdır.
# projeyi klonla
git clone https://github.com/lumiboi/Reel-2-gether.git
cd Reel-2-gether
# bağımlılıkları yükle
npm install
# veya: yarn / pnpm / bunYerelde çalıştırmadan önce .env.local dosyası oluşturun. Aşağıdaki anahtarlar, örnek bir Firebase kurulumu içindir; kendi anahtarlarınızı ekleyin. Firebase kullanılmıyorsa bu kısmı atlayabilirsiniz.
# Firebase (örnek)
NEXT_PUBLIC_FIREBASE_API_KEY=...
NEXT_PUBLIC_FIREBASE_AUTH_DOMAIN=...
NEXT_PUBLIC_FIREBASE_PROJECT_ID=...
NEXT_PUBLIC_FIREBASE_STORAGE_BUCKET=...
NEXT_PUBLIC_FIREBASE_MESSAGING_SENDER_ID=...
NEXT_PUBLIC_FIREBASE_APP_ID=...
# Senkron/Socket URL (kullanıyorsanız)
NEXT_PUBLIC_SOCKET_URL=http://localhost:3001npm run dev
# veya: yarn dev / pnpm dev / bun devTarayıcıdan http://localhost:3000 adresine gidin.
- "Oda oluştur" ile yeni bir oda açın.
- Odadaki davet linkini veya kodu arkadaşlarınızla paylaşın.
- "Rastgele reel" butonuyla havuzdan içerik çekin.
- Oynatma/durdurma/ilerletme gibi kontroller tüm katılımcılara senkron uygulanır.
- Chat panelinden yazışın.
Reel-2-gether/
├─ public/ # statik dosyalar
├─ src/ # Next.js uygulama kaynak kodu
│ ├─ app/ # (App Router) sayfalar, layout, route handlers
│ ├─ components/ # UI bileşenleri
│ ├─ lib/ # yardımcı fonksiyonlar (api/client vb.)
│ └─ styles/ # global stiller
├─ main.py # opsiyonel python yardımcı betik(ler)
├─ firebase.json # Firebase yapılandırması (kullanılıyorsa)
├─ tailwind.config.mjs # Tailwind ayarları
├─ eslint.config.mjs # ESLint ayarları
├─ tsconfig.json # TypeScript ayarları
└─ next.config.ts # Next.js ayarları
Dizinler göstermek amaçlıdır; isimler ve yerleşim değişebilir.
- Senkronizasyon: Tek doğruluk kaynağı (host veya sunucu) üzerinden oynatma durumunu yayınlayın.
- Oda Durumu: Oda kimliği (roomId), odaya katılan kullanıcılar, oynatma zamanı/durumu, aktif reel kimliği.
- Dayanıklılık: Oda durumu kalıcı bir store’a (Firestore/Redis) yazılabilir; kullanıcı ayrılıp dönse dahi kaldığı yerden devam.
- İzinler: Host dışındaki kullanıcıların seek/pause yetkisi opsiyoneldir; ayarlar odada tutulur.
- Video Sunumu: Reel linkleri HLS/mp4 olabilir; cross-origin ve autoplay politikalarına dikkat edin.
- Reel havuzuna eklenen videoların paylaşım ve kullanım koşulları içerik sahiplerine aittir.
- Sadece izinli ve uygun lisanslı içerikleri havuza ekleyin.
- Kullanıcı gizliliği ve KVKK/GDPR gereklilikleri için açık ve erişilebilir bir gizlilik politikası sağlayın.
# geliştirme
npm run dev
# üretim derlemesi
npm run build
npm start
# lint
npm run lint- Oda ayarları: sadece host kontrolü / ortak kontrol modu
- Emoji tepkileri ve izleme sırasına ekleme (queue)
- Oda geçmişi ve yeniden oynat
- Daha zengin moderasyon (kick/ban, oda şifresi)
- Reaksiyon animasyonları ve küçük efektler
- Basit yetkilendirme (örn. Firebase Auth veya magic link)
- Testler (unit/e2e) ve CI
Issue açabilir, PR gönderebilirsiniz. Kod stili için ESLint kuralları ve TypeScript tiplerini takip edin.
Bu projeye ilham veren açık kaynak kütüphaneler ve topluluklara teşekkürler.