SineKazan
Dizi ve film keşfi etrafında kurulmuş; oyunlar, yarışmalar ve yirmi topluluk platformu barındıran ilk uygulamam.
- iOS
- Android
- 2022
- Kendi ürünüm
Ekran görüntüleri
Büyütmek için bir görsele tıklayın.
Uygulama hakkında
SineKazan mağazaya yüklediğim ilk uygulamaydı ve dönüp baktığımda ilk uygulama için fazlasıyla iddialı bir işti. Merkezinde sinema vardı: dizi ve film keşfi, vizyondakiler, listeler ve haber bülteni. Ama iş orada bitmiyordu.
Keşif tarafında kendi yazdığım bir öneri algoritması çalışıyordu. Kullanıcının izlediklerinden, puanladıklarından ve listelerinden yola çıkıp ona özel dizi, film ve liste öneriyordu. Burada öğrendiğim en önemli şey soğuk başlangıç problemiydi: hakkında hiçbir şey bilmediğin yeni bir kullanıcıya ne önereceksin? Genel popülerlik ile kişiselleştirmeyi harmanlayan bir yapı kurdum; kullanıcı etkileşimi arttıkça öneri kişiselleşiyordu.
Üstüne 28 oyun geliyordu: eğlence amaçlı olanlar, dizi ve filmlerle ilgili ödüllü olanlar, çevrimiçi ve çevrimdışı oynananlar, Quiz Nights gibi canlı bilgi yarışmaları. Oyunlardan kazanılan puanlar uygulama içi sanal mağazada harcanabiliyordu. Puan kazanma ile harcamanın tek bir muhasebe akışından geçmesi ve kötüye kullanıma kapalı olması, o yaşta uğraştığım en zor konulardan biriydi.
Bir de yetenek yarışmaları vardı — kısa film, şarkı, cosplay, senaryo. Katılımcıların içerikleri topluluk tarafından puanlanıyor, yorumlanıyor ve beğeniliyordu. Oylamanın manipüle edilebilir olması burada teorik değil pratik bir sorundu; ödül söz konusu olduğunda insanlar sistemi zorluyor.
Bunların yanında yirmi ayrı topluluk platformu vardı: dizi-film eleştiri platformu, anonim dertleşme platformu, uygulama içi sosyal medya akışı, blog yayınlama platformu, canlı yayın ve haber bülteni. Yani tek bir uygulamanın içinde birbirinden bağımsız çalışan onlarca alt sistem.
Uygulamayı bir süre sonra mağazadan kaldırdım. Sebebi teknik değildi: 18 yaşındaydım ve bu ölçekte bir topluluğu — moderasyon, ödül dağıtımı, kullanıcı desteği, içerik denetimi — yönetecek bilgi ve birikime sahip değildim. Kodu yazabilmek ile bir ürünü ayakta tutabilmenin ayrı şeyler olduğunu ilk burada öğrendim; sonraki uygulamalarımda kapsamı bu yüzden çok daha dar tutuyorum.
Öne çıkan özellikler
- Kişisel öneri algoritması: izleme geçmişi, puanlar ve listelerden yola çıkan kendi yazdığım öneri motoru
- Dizi ve film keşfi: vizyondakiler, trend içerikler, türe göre kategoriler ve editoryal listeler
- 28 oyun: eğlence, ödüllü, çevrimiçi, çevrimdışı ve Quiz Nights canlı bilgi yarışmaları
- Puan ekonomisi: oyunlardan kazanılan puanların tek muhasebe akışında toplanması
- Sanal mağaza: biriken puanların uygulama içi ürünlerle takası
- Yetenek yarışmaları: kısa film, şarkı, cosplay ve senaryo kategorileri
- Topluluk oylaması: katılımcı içeriklerine puan, yorum ve beğeni ile destek
- Yirmi topluluk platformu: eleştiri, anonim paylaşım, sosyal akış, blog, canlı yayın ve haber bülteni
- Dizi-film testleri: bölüm bölüm ilerleyen puan kazandıran testler
- Premium üyelik ve kategori bazlı mağaza indirimleri
- Editler ve duvar kâğıtları: dizi-film kesitleri ve karakter içerikleri
- Uygulama içi satın alma altyapısı
Kullanılan teknolojiler
96 teknoloji · 12 başlıkDiller ve Platform
- Java (Android)
- Swift (iOS)
- iOS SDK
- Android SDK
- Native iki platform geliştirme
- Yerel (native) yaklaşım
Arayüz ve Uygulama Katmanı
- UIKit / SwiftUI
- XML Layout
- Activity / Fragment yaşam döngüsü
- UICollectionView / RecyclerView
- Auto Layout / ConstraintLayout
- Yatay kaydırmalı içerik şeritleri
- Sekmeli gezinme
- Görsel önbellekleme
Arka Uç ve Veri
- Firebase Firestore
- Firebase Authentication
- Firebase Storage
- Cloud Functions
- Firestore güvenlik kuralları
- NoSQL veri modelleme
- Firestore transaction
- Bileşik indeks tasarımı
- Denormalizasyon
- Sayaç alanları
Öneri ve Keşif
- İçerik tabanlı öneri
- Kullanıcı etkileşim profili
- Tür ve etiket benzerliği
- Popülerlik sıralaması
- Soğuk başlangıç stratejisi
- Kişiselleştirilmiş listeler
- Arama ve filtreleme
- Film/dizi meta verisi
Oyunlar ve Puan Ekonomisi
- Çevrimiçi ve çevrimdışı oyun akışları
- Canlı bilgi yarışması senkronizasyonu
- Sunucu zaman damgası
- Puan defteri (tek muhasebe akışı)
- Kötüye kullanım kontrolleri
- Sanal mağaza ve puan takası
- Ödül dağıtımının tek seferliği
- Oyun durumu saklama
Topluluk ve İçerik
- Kullanıcı içeriği yükleme
- İçerik moderasyonu
- Yorum ve beğeni sistemi
- Puanlama ve oy manipülasyonu önlemleri
- Anonim paylaşım akışı
- Blog yayınlama
- Sosyal akış (takip / gönderi)
- Grup sohbetleri
- Raporlama ve engelleme
Medya
- AVFoundation (iOS)
- Android medya oynatma
- Görsel ve video yükleme
- PHPicker / medya seçici
- Görsel sıkıştırma
- Küçük resim üretimi
- Duvar kâğıdı ve kesit galerisi
Ağ ve Veri Aktarımı
- URLSession (iOS)
- HTTP istemcisi (Android)
- JSON çözümleme
- Yeniden deneme ve zaman aşımı
- Sayfalama (pagination)
- Görsel önbellek
- Çevrimdışı durum yönetimi
Güvenlik ve Gizlilik
- Keychain (iOS)
- EncryptedSharedPreferences (Android)
- HTTPS ve ATS
- Kimlik doğrulama token yönetimi
- Sunucu taraflı yetki kontrolü
- İzin gerekçe metinleri
- Hesap silme akışı
Bildirim ve Erişilebilirlik
- Firebase Cloud Messaging
- APNs (iOS)
- Android bildirim kanalları
- Bildirim izinleri
- Koyu tema desteği
- Boş / yükleniyor / hata durumları
- Dinamik yazı tipi
Mimari ve Örüntüler
- MVC / MVVM
- Repository katmanı
- Asenkron programlama
- Durum yönetimi
- Modüler özellik mimarisi
- Hata yönetimi ve yeniden deneme
- Ortam ayrımı (dev / prod)
Araçlar ve Yayın Süreci
- Xcode
- Android Studio
- CocoaPods
- Gradle
- Git
- App Store Connect
- Google Play Console
- TestFlight
- Play Console iç test
- Sürüm ve build numaralama
- App Privacy / Data Safety formu
- Açık kaynak kütüphaneler (GitHub)
Fikir, tasarım, arayüz, kod, mağaza yayını ve yayın sonrası bakım — sürecin tamamını baştan sona tek başıma yürüttüm. Ekip, ajans ya da dış kaynak yok.
Geliştirme notları
- Diller ve yaklaşımiOS tarafı Swift, Android tarafı Java ile yazıldı. Çapraz platform bir çatı kullanılmadı; her iki uygulama da kendi platformunun yerel araçlarıyla geliştirildi. 2020'den beri mobil geliştiriyorum.
- Yapay zekâ desteği yokKodun tamamı elle yazıldı. Bu proje, Claude Code ve Codex gibi yapay zekâ kodlama araçları yaygınlaşmadan önce geliştirildi — o dönemde böyle bir araç yoktu.
- BağımlılıklarÇok sayıda açık kaynak GitHub kütüphanesi ve CocoaPods paketi kullanıldı. Bağımlılık yönetimi iOS tarafında CocoaPods, Android tarafında Gradle ile yürütüldü.
- Ölçek ve sınırTek uygulamanın içinde yirmi topluluk platformu, 28 oyun ve bir puan ekonomisi vardı. Uygulamayı mağazadan kaldırma sebebim teknik değildi: 18 yaşında, bu ölçekte bir topluluğu yönetecek birikime sahip değildim. Kapsamı daraltmayı bu deneyimle öğrendim.
- Test ve hata ayıklamaGerçek cihazlarda, farklı ekran boyutlarında ve zayıf ağ koşullarında test edildi. Yayın sonrası çökme raporları okunup düzeltmeler sürüm sürüm gönderildi.
- Yayın süreciHer iki mağazanın inceleme sürecini de tek başıma yürüttüm: App Store Connect ve Google Play Console kurulumu, gizlilik bildirimi (App Privacy / Data Safety), sürüm notları, mağaza görselleri ve red gerekçelerine göre düzeltmeler.
- Ürün sahipliğiFikir, tasarım, geliştirme, arka uç, mağaza yayını ve yayın sonrası bakım — sürecin tamamını tek başıma yürüttüm.
SineKazan hakkında konuşalım
Teknik detayları, karşılaştığım sorunları ve nasıl çözdüğümü memnuniyetle anlatırım.