Cepte Perakende
Kendi envanterimizi toptan fiyatına sattığımız, uçtan uca kendi kurduğum e-ticaret uygulaması.
- iOS
- Android
- 2025
- Kendi ürünüm
Ekran görüntüleri
Büyütmek için bir görsele tıklayın.
Uygulama hakkında
Cepte Perakende bir pazar yeri değildi. Ucuza bulduğumuz ya da tedarikini yapabildiğimiz ürünleri toptan fiyatına sattığımız, envanterin tamamen bize ait olduğu bir e-ticaret uygulamasıydı. Dışarıdan satıcı yoktu; bu, satıcı yönetimi gibi bir yükü ortadan kaldırıyor ama karşılığında stoğun doğruluğunu tamamen bizim sorumluluğumuza bırakıyordu.
Bir e-ticaret uygulamasında en can yakıcı hata, olmayan ürünü satmaktır. O yüzden stok, ürün kartından sepete ve ödeme adımına kadar her yerde tek bir kaynaktan okunuyordu; kullanıcı sepette bile güncel stok sayısını görüyordu. Aynı yerde ürün popülerliğini de gösterdim — kaç kişi favorilemiş, kaç kişi sepete eklemiş — çünkü ikinci en can yakıcı şey, alacağı ürünün tükenip tükenmeyeceğini bilmeyen kullanıcı.
İşin en az konuşulan ama en çok vakit alan kısmı ödeme ve mevzuattı. Tek çekimin yanında 3, 6, 9 ve 12 taksit seçenekleri vardı ve her planın vade farkıyla birlikte tutarı ayrı hesaplanıyordu. Bunun üzerine 6502 sayılı Tüketicinin Korunması Hakkında Kanun ve Mesafeli Satış Yönetmeliği gereği ön bilgilendirme formu, mesafeli satış sözleşmesi, cayma hakkı ve iade kargo akışı geliyordu. Portföyde gösterişli durmuyor ama gerçek bir ticaret uygulamasını oyuncaktan ayıran şey tam olarak bu katman.
Satın alma öncesi soruları azaltmak için de ayrı bir emek verdim: ürün başına sık sorulan sorular, kullanıcı soru–cevap bölümü, puan ve değerlendirmeler, hızlı teslimat ve ücretsiz kargo rozetleri, aynı kategoriden öneriler. Bir ürünü satın almadan önce insanın aklına gelen sorunun cevabı sayfayı terk etmeden bulunabilmeliydi.
Dürüst olmak gerekirse ürünün ticari tarafı — tedarik, operasyon, pazarlama — istediğim yere gelmedi. Ama uygulamanın kendisi baştan sona ayaktaydı: katalogdan sepete, taksitli ödemeden sipariş takibine ve iadeye kadar bir alışverişin tüm yolculuğunu tek başıma kurdum. Bugüne kadar yazdığım en kapsamlı akış buydu.
Uygulama bugün yayında değil. Sebebi teknik bir sorun ya da uygulamanın kendisi değildi — odağımı başka projelere kaydırdım ve bu ölçekte bir e-ticaret işini aynı anda yürütmek mümkün olmadı. Envanteri, tedariki ve operasyonu olan bir ürün, kod tarafı bittikten sonra da her gün ilgi istiyor. Cepte Perakende bana bir uygulamanın teknik olarak hazır olmasıyla ticari olarak ayakta durmasının bambaşka iki şey olduğunu gösterdi.
Öne çıkan özellikler
- Kendi envanteri: dış satıcı yok — katalogdaki her ürün doğrudan bize ait
- Kategori ağacı: giyim, elektronik, ev, kozmetik, dekorasyon, takı ve hediyelik
- Canlı stok takibi: ürün kartında, detayda ve sepette güncel stok sayısı
- Ürün popülerliği: favoriye ve sepete ekleyen kişi sayısının gösterimi
- Ürüne özel sık sorulan sorular ve kullanıcı soru–cevap bölümü
- Puan ve değerlendirmeler — ortalama puan ve yorum sayısıyla birlikte
- Rozetler: hızlı teslimat, ücretsiz kargo ve çok satılan ürün etiketleri
- İndirimli fiyat gösterimi — üstü çizili eski fiyatla birlikte
- Sepet: adet düzenleme, kargo ücreti ve toplam tutar hesabı
- Taksitli ödeme: tek çekim ve 3, 6, 9, 12 taksit — vade farkı hesaplanmış hâlde
- Mesafeli satış uyumu: ön bilgilendirme formu, satış sözleşmesi ve cayma hakkı
- Sipariş takibi ve iade akışı: sipariş detayından iade başlatma ve kargo kodu
- Favoriler, bildirimler ve uygulama içi mesajlaşma
Kullanılan teknolojiler
103 teknoloji · 12 başlıkDiller ve Platform
- Swift
- Java
- Kotlin
- iOS SDK
- Android SDK
- Yerel (native) geliştirme
Arayüz ve Uygulama Katmanı
- UIKit / SwiftUI
- Android View / Compose
- UICollectionView (iOS)
- RecyclerView (Android)
- Auto Layout (iOS)
- ConstraintLayout (Android)
- Görsel önbellekleme
- Navigasyon akışları
Arka Uç ve Veri
- Firebase Firestore
- Firebase Storage
- Cloud Functions
- Firebase Authentication
- Firestore güvenlik kuralları
- NoSQL veri modelleme
- Sorgu ve sayfalama
- Transaction ile stok
- 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 Bildirimler
- Firestore anlık dinleyiciler
- Canlı stok senkronizasyonu
- Uygulama içi mesajlaşma
- Firebase Cloud Messaging
- APNs (iOS)
- Bildirim izinleri
Ödeme ve Gelir
- Sanal POS entegrasyonu
- 3D Secure akışı
- WKWebView / WebView (3DS)
- Taksit ve vade farkı
- Sunucu taraflı ödeme doğrulama
- Sipariş durum yönetimi
Ticaret ve Mevzuat
- Mesafeli satış sözleşmesi
- Ön bilgilendirme formu
- Cayma hakkı akışı
- 6502 tüketici mevzuatı
- İade süreci akışı
- Kargo takip kodu
Mimari ve Örüntüler
- MVVM / MVC
- Kotlin Coroutines
- GCD / async-await
- URLSession (iOS)
- HTTP istemcisi (Android)
- UserDefaults / SharedPreferences
- Yaşam döngüsü yönetimi
Ağ ve Veri Aktarımı
- JSON çözümleme (Codable)
- Yeniden deneme ve zaman aşımı
- Çevrimdışı durum yönetimi
- İ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
- 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ü.
- Mevzuat uyumuMesafeli satış sözleşmesi, ön bilgilendirme formu, cayma hakkı ve iade akışı 6502 sayılı Tüketicinin Korunması Hakkında Kanun ve Mesafeli Satış Yönetmeliği'ne göre kurgulandı.
- 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.
Cepte Perakende hakkında konuşalım
Teknik detayları, karşılaştığım sorunları ve nasıl çözdüğümü memnuniyetle anlatırım.