Tüm Projeler
Watchly logo
Devam Ediyor

Watchly

Watchly, film ve dizi takip uygulamasıdır. Kullanıcıların izleme listelerini yönetmelerine, bölüm ilerlemelerini takip etmelerine ve sosyal özelliklerle arkadaşlarıyla etkileşim kurmalarına olanak sağlar.

swiftflutterdartsupabase
1 Haziran 2026

Watchly — Film ve Dizi Takip Uygulaması (iOS)

Watchly, Swift ve SwiftUI ile geliştirilmiş, film ve dizileri takip etmeyi keyifli hale getiren modern bir iOS uygulamasıdır. Kullanıcıların izledikleri içerikleri kategorize etmesine, bölüm bazında ilerleme kaydetmesine, puan ve yorumlar bırakmasına, arkadaşlarını takip ederek sosyal bir feed’de etkileşimde bulunmasına olanak tanır.

Platform: iOS 17+
Dil & Framework: Swift 5.10, SwiftUI
Backend: Supabase (PostgreSQL + Auth + Realtime)
Veri Kaynağı: TMDB API


✨ Temel Özellikler

  • 📚 Kapsamlı İzleme Kütüphanesi
    Film/dizileri 5 farklı durumla etiketleyin: İzleniyor, Tamamlandı, Planlandı, Bırakıldı, Askıda. Her içerik için kişisel not, puan ve tekrar izleme sayısı ekleyebilirsiniz.

  • 📺 Bölüm Bazında Takip
    Dizilerde sezon/bölüm ilerlemesini kaydedin, her bölüme ayrı puan ve yorum bırakın. Dizi bittiğinde otomatik olarak “Tamamlandı” durumuna geçer.

  • 💬 Sosyal Feed & Yorumlar
    Takip ettiğiniz kişilerin herkese açık yorumlarını ve puanlarını keşfedin. Yorumları beğenebilir, alt yorum yazabilirsiniz. Her içerik için spoiler uyarısı ekleme imkanı.

  • 🎨 Özel Listeler
    “En iyi Nolan filmleri”, “Korku maratonu” gibi tematik listeler oluşturun. Listeleri herkese açık veya özel yapabilir, emoji ve kapak görseli ekleyebilirsiniz.

  • 🔔 Anlık Bildirimler
    Yeni takipçi, yorum beğenisi, alt yorum, takip ettiğiniz birinin yeni aktivitesi ve favori dizinizin yeni bölümü için push bildirimleri alın (APNs).

  • 📊 Kişisel İstatistikler
    Toplam izlenen içerik, tür dağılımı, ortalama puan, bölüm sayısı gibi detaylı istatistikleri grafiklerle görüntüleyin (Swift Charts).

  • 🔍 Gelişmiş Arama
    TMDB üzerinden film/dizi, kullanıcı adı veya özel liste adına göre arama yapın.

  • 🌙 Karanlık Mod & Dinamik Tipografi
    Tam karanlık mod desteği, erişilebilirlik için Dynamic Type ve VoiceOver uyumu.


🧱 Proje Mimarisi

  • Presentation Katmanı – SwiftUI View’lar ve ViewModel’ler (@Observable)
  • Domain Katmanı – İş kurallarını içeren Entity’ler ve Use Case protokolleri
  • Data Katmanı – Supabase ve TMDB repository implementasyonları, Data Source’lar
  • Core Katmanı – Tema, sabitler, extension’lar, yardımcı araçlar (ImageCache, Keychain)

Veritabanı Şeması (Supabase):

  • 15+ tablo (profiles, watchlist, episode_progress, reviews, custom_lists, follows, notifications…)
  • Row Level Security (RLS) ile yetkilendirme
  • Realtime ile anlık senkronizasyon (watchlist, yorumlar, bildirimler)
  • Trigger’lar ile sayaçlar (like_count, follower_count) otomatik güncellenir
  • Materialized view’lar: social_feed, user_stats, user_genre_stats, popular_media

TMDB Entegrasyonu:

  • Veriler önce Supabase’deki media tablosunda cache’lenir, ardından UUID üzerinden diğer tablolarla ilişkilendirilir.
  • Cache stratejisi sayesinde TMDB API limitleri aşılmaz ve sosyal sorgular hızlı çalışır.

📱 Bazı Ekran Görüntüleri

1 / 3
Görsel 1
Görsel 2
Görsel 3

🚀 Projeyi Çalıştırma

Proje henüz App Store’da değil ancak kaynak kodu ve geliştirme ortamı kurulumu aşağıdaki gibidir:

git clone https://github.com/kullaniciadi/Watchly.git
cd Watchly
# Xcode 15.4+ ile açın
# Watchly.xcconfig dosyasına kendi Supabase ve TMDB anahtarlarınızı ekleyin
# Supabase CLI ile local ortam kurun: supabase start

Not: Watchly.xcconfig dosyası .gitignore ile korunmaktadır. Kendi anahtarlarınızı eklemeden uygulama çalışmaz.


📚 Öğrendiklerim & Zorluklar

  • SwiftUI + Supabase entegrasyonu: Realtime kanallarını yönetmek ve MVVM ile temiz bir şekilde birleştirmek.
  • RLS politikaları tasarlamak: Karmaşık erişim kurallarını (özel listeler, takip sistemi) güvenli hale getirmek.
  • Trigger’larla sayaç senkronizasyonu: İstemci tarafında elle sayaç güncellemek yerine veritabanı tetikleyicileri kullanarak tutarlılığı sağlamak.
  • TMDB cache stratejisi: tmdb_id yerine UUID kullanarak tüm ilişkileri tek tip hale getirmek.
  • Apple Sign-In zorunluluğu: App Store kurallarına uygun şekilde kimlik doğrulama akışı tasarlamak.

🔮 Gelecek Planları

  • Widget’lar (bugün izlenecek bölüm, izleme istatistikleri)
  • Öneri motoru – kullanıcının tür tercihlerine göre yapay zeka tabanlı öneriler
  • Topluluk etkinlikleri (Film quizleri, challenge’lar)

İletişim

Proje ile ilgili sorularınız veya geri bildirimleriniz için bana ulaşabilirsiniz:
🔗 GitHub | LinkedIn