ArenaX
E-spor turnuvaları, yetenek yarışmaları ve canlı bilgi yarışmalarını tek uygulamada toplayan ödüllü yarışma platformu.
- iOS
- Android
- 2024
- Kendi ürünüm
Ekran görüntüleri
Büyütmek için bir görsele tıklayın.
Uygulama hakkında
ArenaX, ödüllü yarışmaları tek bir uygulamada toplama fikriyle çıktı. Hedefi Türkiye’nin en büyük çevrimiçi e-spor turnuvalarını düzenlemekti; yanına da yetenek yarışmalarını koydum — şarkı söyleme, kısa film, cosplay, fotoğraf, senaryo, resim. Üstüne çekilişler, ödül kazandıran mini oyunlar ve canlı bilgi yarışmaları geldi. Toplamda altı ayrı yarışma kategorisi vardı.
Buradaki asıl mesele şuydu: bu altı kategori birbirine hiç benzemiyor. E-spor turnuvasında platform (Xbox, PlayStation, PC), takım ve eşleşme tablosu var; yetenek yarışmasında dosya yükleme ve değerlendirme var; çekilişte kura var; “parmağını en süre tutan kazanır” gibi bir oyunda ise sonucu telefonun kendisi üretiyor. Ben bunların hepsini ortak bir “yarışma” modeline indirdim: her yarışmanın bir katılım biçimi, bir süresi, bir ödülü ve bir kazanan belirleme kuralı var. Kategoriye özel olan sadece bu dört alanın içi dolduruluyor; listeleme, arama, katılım takibi ve ödül dağıtımı hepsinde aynı kodu kullanıyor.
Yetenek yarışmaları tarafında iş kullanıcı içeriğine dönüyordu. İnsanlar şarkı kaydı, video, fotoğraf ve senaryo yüklüyordu; bunların depolanması, boyutlandırılması ve yayınlanmadan önce kontrolden geçmesi gerekiyordu. Ödüllü bir yarışmada moderasyon isteğe bağlı bir özellik değil, ürünün ayakta kalma şartı.
Canlı bilgi yarışması ise beklediğimden zor çıktı. Herkesin aynı soruyu aynı anda görmesi, cevap süresinin cihaz saatine değil sunucu saatine bakması ve süre dolduktan sonra gelen cevabın sayılmaması gerekiyordu. Ödül tarafında da benzer bir titizlik vardı: token kazanma ve harcama tek bir muhasebe akışından geçiyor, ödül dağıtımı ise bir yarışma için yalnızca bir kez çalışabiliyordu.
Fikir, tasarım, geliştirme ve mağaza yayını dahil ürünün tamamını tek başıma yürüttüm.
ArenaX bugün yayında değil: mağaza kuralları tarafında sorun çıktı. Ödüllü yarışma içeren uygulamalar, mağazaların en hassas davrandığı kategorilerden biri; katılım, ödül dağıtımı ve şans unsuru barındıran her mekanik ayrı kurallara tabi. Bunu proje ilerledikten sonra öğrenmek pahalıya mal oldu. Bugün ödül veya yarışma mekaniği olan bir şey tasarlarken mağaza kurallarını kod yazmadan önce okuyorum — sonradan uyum sağlamak, baştan uygun tasarlamaktan çok daha zor.
Öne çıkan özellikler
- Altı yarışma kategorisi: e-spor, yetenek, çekiliş, ödüllü oyunlar, bilgi yarışmaları ve fiziksel yarışmalar
- E-spor turnuvaları: Xbox, PlayStation ve PC ayrımıyla, bireysel veya takım olarak katılım
- Yetenek yarışmaları: şarkı, kısa film, cosplay, fotoğraf, senaryo ve resim kategorileri
- Canlı bilgi yarışmaları: çoktan seçmeli sorular, sunucu saatli cevap süresi
- Token ödül ekonomisi: yarışma başına token ödülü, tek muhasebe akışından geçen kazanç ve harcama
- İçerik yükleme ve moderasyon: yüklenen ses, video ve görsellerin yayın öncesi kontrolü
- Popüler yarışmalar vitrini ve yarışma adına göre arama
- Katılım takibi: devam eden ve tamamlanan yarışmaların takibi
- Bildirimler: yeni yarışma duyuruları, sonuç açıklamaları ve süre uyarıları
- Uygulama içi satın alma altyapısı
Kullanılan teknolojiler
106 teknoloji · 12 başlıkDiller ve Platform
- Swift (iOS)
- Java (Android)
- Kotlin (Android)
- Native iOS geliştirme
- Native Android geliştirme
- iOS SDK / Android SDK
Arayüz ve Uygulama Katmanı
- UIKit / SwiftUI
- Auto Layout
- Android XML arayüz
- Activity / Fragment yaşam döngüsü
- UICollectionView / RecyclerView
- Liste sayfalama
- Arama ve filtreleme arayüzü
Arka Uç ve Veri
- Firebase Firestore
- Firebase Authentication
- Firestore Security Rules
- Cloud Functions
- Firestore transaction
- Firestore sorgu ve indeks
- Firebase Storage
- Firestore çevrimdışı önbelleği
- Batch write
- İmleç tabanlı sayfalama
- Denormalizasyon
- Sayaç alanları
- Cloud Functions tetikleyicileri
- Zamanlanmış görevler
- Veri geçişi (migration)
Gerçek Zamanlı ve Medya
- Firestore anlık dinleyiciler
- Sunucu zaman damgası
- Canlı soru senkronizasyonu
- AVFoundation (iOS)
- PHPickerViewController (iOS)
- Android medya seçici
- Video ve ses oynatma
- Yükleme ilerleme takibi
Ödeme ve Gelir
- StoreKit (iOS)
- Google Play Billing
- Sunucu tarafı satın alma doğrulama
- Token bakiye muhasebesi
- Ürün kataloğu yapılandırması
Bildirim ve Duyurular
- Firebase Cloud Messaging
- APNs
- UNUserNotificationCenter (iOS)
- Android bildirim kanalları
- Konu tabanlı bildirim
- Bildirim izinleri
Mimari ve Örüntüler
- MVC / MVVM
- Asenkron programlama
- Kotlin coroutines
- Swift async/await
- Rol tabanlı moderasyon akışı
- Durum yönetimi
- Hata ve yeniden deneme yönetimi
Ağ ve Veri Aktarımı
- URLSession (iOS)
- HTTP istemcisi (Android)
- JSON çözümleme (Codable)
- Yeniden deneme ve zaman aşımı
- Çevrimdışı durum yönetimi
- Görsel önbellekleme
- İndirme ve yükleme kuyruğu
- Çok parçalı dosya yükleme
- Bant genişliğine göre kalite
Güvenlik ve Gizlilik
- Keychain (iOS)
- EncryptedSharedPreferences (Android)
- HTTPS ve ATS
- Kimlik doğrulama token yönetimi
- Oturum yenileme
- İzin gerekçe metinleri
- Hesap silme akışı
- Sunucu taraflı yetki kontrolü
- Hassas veri maskeleme
Arayüz Durumları ve Erişilebilirlik
- Koyu tema desteği
- Dinamik yazı tipi
- Güvenli alan (SafeArea)
- Boş / yükleniyor / hata durumları
- İskelet (skeleton) yükleme
- Çekerek yenileme
- Klavye ve odak yönetimi
- Derin bağlantı (Universal Links)
- VoiceOver / TalkBack etiketleri
Test, Hata Ayıklama ve Ölçüm
- Xcode Instruments
- Android Profiler
- LLDB
- Logcat
- Bellek sızıntısı takibi
- Ağ trafiği inceleme
- Çökme raporu okuma
- Gerçek cihazda test
- Farklı ekran boyutu testi
Araçlar ve Yayın Süreci
- Xcode
- Android Studio
- App Store Connect
- Google Play Console
- CocoaPods
- Gradle
- Git
- Açık kaynak kütüphaneler (GitHub)
- TestFlight
- Play Console iç test
- Sürüm ve build numaralama
- İmzalama ve provizyon profilleri
- App Store inceleme süreci
- App Privacy / Data Safety formu
- Mağaza görselleri ve ASO metinleri
- Uygulama boyutu optimizasyonu
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 ve Kotlin 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ü.
- İçerik moderasyonuÖdüllü yarışmalarda kullanıcı içeriği yayınlanmadan önce kontrolden geçiyordu. Moderasyon isteğe bağlı bir özellik değil, ürünün ayakta kalma şartıydı.
- 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.
ArenaX hakkında konuşalım
Teknik detayları, karşılaştığım sorunları ve nasıl çözdüğümü memnuniyetle anlatırım.