Ana içeriğe geç
Ana SayfaHakkımdaProjeler
BlogTeklif AlİletişimÖzgeçmiş
Ana Sayfa
Hakkımda
Projeler
Blog
Teklif Al
İletişim
Özgeçmiş

İçerik

KarşılaştırmalarKaynaklarOkuma Listesi

Araçlar

Kod SnippetsAraç KutusuDashboard

Etkileşim

Bilgi YarışmasıPlaygroundDuvar Kağıtları

Ben

/uses/nowGitHubBaşarımlar

Site

ChangelogStatusColophonCredits
  1. Ana Sayfa
  2. /
  3. Projeler
  4. /
  5. ESP Point
Yeme & İçme

ESP Point

Kahve Sipariş ve Sadakat Programı

9:41
E

Kullanıcı

İndirme

4.8(400+ değerlendirme)

App Store Puanı

7 ay

Geliştirme Süresi

Proje Hakkında

ESP Point, Türkiye'nin hızla büyüyen specialty kahve pazarında faaliyet gösteren bir kahve zinciri için geliştirilen ve 223+ kaynak dosyasıyla kariyer boyunca üzerinde çalıştığım en büyük SwiftUI projesi olan kapsamlı bir mobil sipariş ve sadakat platformudur. Uygulama, kahve severlerin günlük rutinini dijitalleştirerek sıra beklemeden önceden sipariş verme, her alışverişte puan toplama ve kişiselleştirilmiş kampanyalardan faydalanma imkanı sunar. Proje, kahve sektöründeki üç temel soruna çözüm getirmek üzere tasarlandı: (1) Sabah yoğun saatlerinde oluşan uzun kuyruklar — müşteri kaybının en büyük nedeni, (2) Kağıt bazlı sadakat kartlarının etkisizliği — müşterilerin %60'ı kartı kaybediyor veya unutuyor, (3) Kişiselleştirilmiş pazarlama eksikliği — tüm müşterilere aynı kampanya gönderiliyor. ESP Point bu üç sorunu tek platformda çözerek müşteri deneyimini kökten değiştirdi. Önceden sipariş modülü, kullanıcının favori içeceğini özelleştirmesine (süt tipi, şeker miktarı, sıcaklık, ekstra shot) ve en yakın mağazaya gönderilmesine olanak tanır. Sipariş durumu gerçek zamanlı olarak takip edilir — hazırlanıyor, hazır, teslim alınabilir adımları push notification ile bildirilir. Sadakat programı gamification unsurlarıyla zenginleştirildi: her 10 kahvede 1 bedava, altın/gümüş/bronz üyelik seviyeleri, doğum günü sürprizi ve arkadaş davet bonusları. Mağaza keşfi modülü MapKit entegrasyonuyla en yakın şubeleri gösterir, her mağazanın çalışma saatleri, müsaitlik durumu ve anlık yoğunluk seviyesini paylaşır. Combine framework ile reaktif veri akışı, SwiftUI ile deklaratif UI ve MVVM pattern ile temiz mimari üzerine inşa edilen ESP Point, modern iOS geliştirmenin en güncel teknolojilerini bir arada kullanan showcase bir projedir. 223+ dosyalık bu büyük SwiftUI projesi, SwiftUI'nin kurumsal ölçekte kullanılabileceğini kanıtlayan önemli bir referans oldu. 30.000+ aylık aktif kullanıcı ve 120.000+ indirmeyle kahve zincirinin dijital dönüşümünde kilit rol oynayan platform, App Store'da 4.8 puanla kahve kategorisinin en yüksek puanlı yerli uygulaması konumundadır.

Özellikler

✦ Önceden Sipariş
✦ Sadakat Puanı Toplama
✦ Mağaza Keşfi ve Harita
✦ Kişiselleştirilmiş Kampanyalar
✦ QR Kod ile Ödeme
✦ İçecek Özelleştirme
✦ Gerçek Zamanlı Sipariş Takibi
✦ Gamification Seviyeleri
✦ Doğum Günü Sürprizi
✦ Arkadaş Davet Programı
✦ Favori Siparişler
✦ Anlık Mağaza Yoğunluğu

Süreç

  1. Keşif
  2. Tasarım
  3. Geliştirme
  4. Test
  5. Yayın

Zorluklar & Çözümler

Zorluk

223+ dosyalık bu büyük SwiftUI projesinde beş kritik teknik ve ürün zorluğuyla karşılaşıldı: Birincisi, SwiftUI'nin kurumsal ölçekte performans sınırları — 223+ dosya ve 50+ ekranlık bir projede SwiftUI'nin body recomputation mekanizması performans darboğazı oluşturuyordu. Özellikle karmaşık liste görünümleri (menü, sipariş geçmişi), iç içe geçmiş view hiyerarşileri ve animasyonlu geçişlerde frame drop problemi yaşanıyordu. SwiftUI'nin declarative yapısı küçük projelerde verimli ama bu ölçekte dikkatli optimizasyon gerektiriyordu. İkincisi, Combine ile karmaşık veri akışı yönetimi — önceden sipariş akışında 8+ veri kaynağı eş zamanlı çalışıyor: menü verisi (API), kullanıcı tercihleri (lokal), mağaza müsaitliği (real-time), kampanya uygunluğu (hesaplama), stok durumu (API), fiyat hesaplama (lokal + API), ödeme durumu (gateway) ve sipariş takibi (WebSocket). Bu kaynakların Combine pipeline'larıyla orkestra edilmesi, hata yönetimi ve race condition önlenmesi karmaşık bir reactive architecture gerektiriyordu. Üçüncüsü, gerçek zamanlı sipariş takibi — müşteri sipariş verdikten sonra barista'nın hazırlık sürecini canlı izlemek istiyor. Backend'den gelen durum güncellemelerinin (alındı → hazırlanıyor → hazır → teslim alındı) milisaniye gecikmelerle UI'a yansıtılması, bağlantı koptuğunda graceful degradation ve push notification ile arka plan güncellemesi koordinasyonu gerekiyordu. Dördüncüsü, gamification ve sadakat mantığı — puan hesaplama, seviye atlama, kampanya uygunluk kontrolü ve bedava içecek hak etme gibi iş kuralları karmaşık ve sürekli değişiyor. Backend'deki kural değişikliklerinin istemciye anında yansıması, offline'da puan gösterimi ve fraud prevention (sahte puan toplama önleme) gerekiyordu. Beşincisi, içecek özelleştirme kombinatorik patlaması — 30+ içecek x 4 süt tipi x 5 şeker seviyesi x 3 sıcaklık x 3 boy x opsiyonel ek malzemeler = binlerce olası kombinasyon. Her kombinasyonun fiyat etkisi, stok uygunluğu ve görsel temsili yönetilmeliydi.

Çözüm

Çözüm stratejisi, SwiftUI'nin güçlü yönlerini kullanırken sınırlamalarını aşacak şekilde tasarlandı: 1. SwiftUI Performans Optimizasyonu: View body recomputation'ı minimize etmek için kapsamlı strateji uygulandı. @StateObject vs @ObservedObject doğru kullanımı — view lifecycle'a göre seçim. EquatableView protocol ile gereksiz recomputation önleme. LazyVStack/LazyHStack ile büyük liste performansı (standart VStack yerine). GeometryReader kullanımını minimize etme (performans maliyeti yüksek) — PreferenceKey ile alternatif çözümler. Navigation: NavigationStack (iOS 16+) ile type-safe navigation path, lazy destination loading ile ilk ekran yükleme hızı optimizasyonu. 2. Combine Orkestrasyon Katmanı: Her veri kaynağı için ayrı Publisher, CombineLatest ve Merge ile birleştirme. Sipariş akışı pipeline: menuPublisher.combineLatest(storePublisher, campaignPublisher).map { ... }.flatMap { orderService.validate($0) }.receive(on: DispatchQueue.main). Error handling: retry(3) + catch ile graceful degradation. Cancellation: AnyCancellable set ile memory leak önleme. Debounce: arama ve filtre input'larında 0.3s debounce ile gereksiz API çağrısı önleme. 3. Real-Time Sipariş Takibi: URLSessionWebSocketTask ile WebSocket bağlantısı — sipariş durumu güncellemeleri real-time. Bağlantı yönetimi: auto-reconnect (exponential backoff), heartbeat ping (30s interval), connection state monitoring. Fallback: WebSocket bağlantısı kurulamadığında polling (15s interval). Push notification ile arka plan güncellemesi: UNNotificationServiceExtension ile rich notification (sipariş durumu + mağaza bilgisi + tahmini süre). 4. Kural Motoru (Rules Engine): Sadakat kuralları sunucu tarafında tanımlanır, istemciye JSON config olarak indirilir. Kural motoru: koşul (min harcama, zaman aralığı, kategori) → aksiyon (puan çarpanı, bedava ürün, indirim). A/B test desteği: her kampanya variant ID ile etiketlenir, kullanıcı segmentine göre farklı kural seti uygulanır. Offline puan gösterimi: CoreData ile lokal puan cache, online olunduğunda sunucu ile senkronize. 5. Dinamik Menü ve Özelleştirme Sistemi: Menü yapısı sunucu tarafından JSON ile tanımlanır — yeni içecek ekleme veya fiyat değişikliği app update gerektirmez. Özelleştirme seçenekleri her içecek için ayrı konfigürasyon: müsait süt tipleri, şeker seviyeleri, boylar ve fiyat etkileri. SwiftUI'nin declarative yapısı ile özelleştirme UI'ı dinamik olarak oluşturulur — sunucudan gelen config'e göre form alanları render edilir.

Teknik Detaylar

Uygulama MVVM mimarisi üzerinde SwiftUI ve Combine ile geliştirildi. 223+ dosya, feature-based modüler yapıda organize edildi. SwiftUI Mimari Yapısı: Feature modülleri: Order (sipariş akışı), Loyalty (sadakat programı), Store (mağaza keşfi), Menu (menü ve özelleştirme), Profile (kullanıcı), Campaign (kampanyalar). Her modülde View + ViewModel + Model + Service katmanları. Navigation: NavigationStack ile programmatic navigation, NavigationPath ile type-safe routing. @StateObject ile ViewModel lifecycle yönetimi — View oluşturulduğunda bir kez init, view yeniden çizildiğinde korunur. Combine Reaktif Katmanı: ViewModel'larda @Published property'ler ile UI binding. Network katmanı: URLSession.dataTaskPublisher → decode(type:decoder:) → receive(on: RunLoop.main). Chaining: flatMap ile dependent API calls (login → fetch profile → fetch orders). CombineLatest ile paralel veri birleştirme (menu + campaigns + store availability). Error handling: tryMap + mapError ile tip-güvenli hata dönüşümü. Subscription yönetimi: Set<AnyCancellable> ile memory leak önleme, deinit'te otomatik cancel. Swift Concurrency Entegrasyonu: async/await ile Combine pipeline'larına alternatif — yeni modüllerde Swift Concurrency tercih edildi. TaskGroup ile paralel API çağrıları (menü kategorileri parallel fetch). Actor isolation ile thread-safe veri erişimi — OrderActor ile sipariş state yönetimi. @MainActor ile UI güncellemeleri. WebSocket Real-Time Katmanı: URLSessionWebSocketTask ile sipariş durumu güncellemeleri. Message format: JSON Codable — OrderStatusUpdate(orderId: String, status: OrderStatus, estimatedTime: Int?, barista: String?). Ping/pong heartbeat: 30s interval ile bağlantı canlılık kontrolü. Auto-reconnect: bağlantı koptuğunda 1s → 2s → 4s → 8s exponential backoff ile yeniden bağlanma (max 5 deneme). Connection state: enum ConnectionState { case connecting, connected, disconnected, reconnecting } → UI'da bağlantı durumu göstergesi. QR Kod Entegrasyonu: CoreImage CIFilter ile QR kod oluşturma — kullanıcı dijital kartının QR temsili. AVFoundation ile QR kod okuma — mağazada kampanya QR'ı tarama. QR kod içeriği: encrypted user token + timestamp (replay attack önleme). Brightness artışı: QR gösterim ekranında UIScreen.main.brightness otomatik maksimum (okuma kolaylığı). Harita ve Konum: MapKit ile mağaza lokasyonları — SwiftUI Map view (iOS 17 MapKit improvements). Custom annotation: mağaza yoğunluk göstergesi (yeşil: sakin, sarı: orta, kırmızı: yoğun). CoreLocation CLLocationManager ile konum erişimi. Konum bazlı sıralama: kullanıcıya en yakın mağazalar önce. Performans Optimizasyonları: LazyVStack ile büyük menü listesi (200+ ürün). Image caching: AsyncImage + custom cache layer (NSCache + disk). Prefetch: liste kaydırılırken sonraki sayfa verisini önceden yükleme. Animation: withAnimation(.spring()) ile 60fps smooth geçişler, matchedGeometryEffect ile hero animation.

Araştırma Notları

Piyasa Araştırması ve Bulgular: Türkiye Kahve Pazarı: - Türkiye kahve pazarı: $3.8B (2024), %12 CAGR büyüme - Specialty kahve segmenti: toplam pazarın %22'si, en hızlı büyüyen segment (%18 CAGR) - Kahve zinciri mağaza sayısı (Türkiye): 5.000+ (2024) - Günlük kahve tüketimi: kişi başı 1.8 fincan (şehir ortalaması 2.4) - Mobil sipariş penetrasyonu: %15 (2024), %35 hedefi (2026) - Kahve uygulaması indirme hacmi: yıllık %40 büyüme - Sadakat programı katılım oranı (dijital): %65 vs kağıt kart %25 Global Kahve Teknoloji Trendleri: - Starbucks mobile order: siparişlerin %31'i mobil (ABD, 2024) - Starbucks Rewards: 34M+ aktif üye — en başarılı kahve sadakat programı - Luckin Coffee (Çin): %100 mobil-first model, 16.000+ mağaza - Costa (UK): mobil sipariş + sadakat entegrasyonu ile %25 müşteri frekansı artışı - Global kahve teknoloji yatırımları: $2.1B (2024) Rakip Analizi (Türkiye): Starbucks Türkiye: mobil sipariş var ama Türkiye'ye özel özellikler sınırlı. Kahve Dünyası: sadakat kartı var, mobil sipariş geliştirme aşamasında. Gloria Jean's/Caribou: dijital sadakat yok. Yerli zincirler (Espressolab, Petra Roasting): dijital varlık minimum. ESP Point, yerli kahve zincirleri arasında en kapsamlı dijital platformu sunarak rekabet avantajı sağlıyor. Benchmark: Starbucks Rewards programının başarı faktörleri analiz edildi: (1) Gamification (star/level sistemi), (2) Kişiselleştirilmiş öneriler, (3) Önceden sipariş kolaylığı, (4) Seasonal kampanyalar. ESP Point bu 4 faktörü Türkiye pazarına adapte etti. Hedef Kitle Segmentasyonu: 1. Sabah Rutincileri (%40): Her gün aynı saatte aynı içecek, hız ve kolaylık öncelik 2. Sosyal Kahve Severleri (%25): Arkadaşlarla buluşma, mağaza ambiyansı önemli 3. İş Profesyonelleri (%20): Gün içinde 3+ kahve, fatura ve harcama takibi ihtiyacı 4. Keşifçiler (%15): Yeni tatlar deneme, seasonal menü meraklısı, özelleştirme seven Kullanıcı Araştırması (150+ Kahve Tüketicisi): - %82'si sıra beklememek için önceden sipariş vermeyi tercih eder - %71'i dijital sadakat programına katılmaya istekli - %65'i kişiselleştirilmiş kampanya ve öneri istiyor - %58'i içecek özelleştirme seçeneklerini önemsiyor - %45'i mağaza yoğunluk bilgisi görmek istiyor - Ortalama sabah kahve bekleme toleransı: 3 dakika (üzeri kayıp müşteri)

Tasarım Süreci

Tasarım süreci, kahve tüketim ritüellerine ve SwiftUI'nin modern tasarım yeteneklerine uygun şekilde 5 fazda yürütüldü: Faz 1 — Keşif ve Kullanıcı Araştırması (3 hafta): 150+ kahve tüketicisine online anket, 12 kişilik derinlemesine görüşme (4 sabah rutincisi, 3 iş profesyoneli, 3 sosyal kahve sever, 2 keşifçi), 3 mağazada 2'şer gün saha gözlemi yapıldı. Mevcut müşteri yolculuğu haritalandı: mağazaya gel → kuyruğa gir → menüye bak → sipariş ver → bekle → al → öde. Bu 7 adımlık sürecin en büyük friction noktası: kuyruk bekleme (%82 şikayet), ödeme süresi (%45) ve içecek yanlış hazırlanması (%28 — sözlü sipariş iletişim hatası). En kritik insight: sabah 08:00-10:00 arası siparişlerin %60'ı yapılıyor ve müşteriler ortalama 8 dakika bekliyor — bu 8 dakikayı 2 dakikaya indirmek projenin birincil hedefi. Faz 2 — Bilgi Mimarisi ve Sipariş Akışı (2 hafta): Tab bar yapısı: Sipariş (menü + özelleştirme + sepet), Mağazalar (harita + liste), Ödüller (sadakat + kampanyalar), Siparişlerim (geçmiş + aktif takip), Profil (hesap + tercihler). Sipariş akışı 4 adıma sadeleştirildi: (1) İçecek seç + özelleştir, (2) Mağaza seç, (3) Ödeme yap, (4) Takip et. Quick order: favori sipariş tek dokunuşla tekrar — sabah rutincileri için en değerli özellik. Siri Shortcuts entegrasyonu: "Hey Siri, her zamanki kahvemi sipariş ver" ile hands-free sipariş planlandı. Faz 3 — SwiftUI Tasarım Sistemi (2 hafta): Modern ve sıcak tasarım dili: amber-turuncu renk paleti (kahve tonları), SF Pro Rounded tipografi (yumuşak ve arkadaşça), glassmorphism card'lar (blur + transparency), mikro animasyonlar (buton tap, sayfa geçişi, sipariş durumu değişimi). Menü kartları: yüksek kaliteli içecek fotoğrafı + isim + fiyat + hızlı özelleştirme butonları. Özelleştirme ekranı: visual picker (süt tipi ikonlarla, şeker seviyesi slider, sıcaklık toggle). Sadakat dashboard: circular progress (seviye ilerlemesi), animasyonlu puan sayacı, rozet koleksiyonu. Dark mode baştan tasarlandı — akşam kahve siparişleri için. Faz 4 — Prototip ve Kullanılabilirlik Testi (1.5 hafta): 15 katılımcı ile moderasyonlu kullanılabilirlik testi (mağaza ortamında, gerçek sipariş senaryoları). Temel bulgular ve çözümler: (1) Menüde çok fazla seçenek bunaltıcı → kategori tab'ları (Sıcak, Soğuk, Seasonal, Yiyecek) + "Senin İçin" kişiselleştirilmiş bölüm, (2) Özelleştirme adımları çok fazla → varsayılan ayarlarla hızlı sipariş + "Özelleştir" butonu ile detaya gitme, (3) Mağaza seçimi harita'da zor → liste görünümü varsayılan (mesafe sıralı) + harita toggle, (4) Ödeme onay ekranı bilgi yoğunluğu → özet kart (içecek + mağaza + fiyat) + tek buton onay, (5) Sadakat puan gösterimi sayfa dibinde kayboluyordu → her sipariş sonrası kazanılan puan animasyonlu popup. Görev tamamlama oranı %80'den %95'e yükseldi. Faz 5 — Gamification ve Kampanya Tasarımı (1.5 hafta): Sadakat seviyeleri görsel tasarımı: Bronz (bakır tonu, basit rozet), Gümüş (parlak gri, detaylı rozet), Altın (altın tonu, premium rozet + özel animasyon). Her seviye için farklı ayrıcalık kartı tasarlandı. Kampanya kartları: gradient arka plan + büyük CTA buton + countdown timer (sınırlı süre). Streak göstergesi: ateş ikonu + gün sayacı + mini takvim. Doğum günü sürprizi: tam ekran konfeti animasyonu + bedava içecek kartı. Bu gamification unsurlarının tasarımı, kullanıcı motivasyonunu artırmada kritik — A/B test sonuçlarıyla her detay optimize edildi.

Sonuçlar & Etki

ESP Point, kahve zincirinin dijital dönüşümünde dönüm noktası olan bir platform oldu: Kullanıcı Metrikleri: - 30.000+ aylık aktif kullanıcı (MAU) — aylık %20 organik büyüme - 120.000+ kümülatif indirme - App Store'da 4.8 puan (400+ değerlendirme) — kahve kategorisi en yüksek yerli puan - D7 retention oranı: %55 (yeme-içme sektörü ortalaması %25) - D30 retention oranı: %38 (sadakat programı etkisi) - Ortalama oturum süresi: 4.5 dakika - Günlük sipariş sayısı: 2.800+ (pik saatlerde 08:00-10:00 arası %60'ı) İş Etkisi: - Önceden sipariş kullanım oranı: %45 (müşterilerin yarıya yakını sıra beklemeden alıyor) - Ortalama bekleme süresi azalması: 8 dakikadan 2 dakikaya (%75 iyileşme) - Sadakat programı katılım oranı: %72 (kağıt kart döneminde %25) - Müşteri başına aylık sipariş frekansı: 12.4 (program dışı: 6.2 — 2x artış) - Sepet büyüklüğü artışı: upsell önerileri ile %18 daha yüksek ortalama sipariş tutarı - Kampanya dönüşüm oranı: %28 (genel push notification ortalaması %3) - Arkadaş daveti ile organik büyüme: toplam indirmelerin %22'si Teknik Performans: - Crash-free oranı: %99.7 (223+ dosyalık SwiftUI projede dikkat çekici) - App boyutu: 38MB - Cold start süresi: <900ms (SwiftUI ilk render dahil) - Sipariş API yanıt süresi: p95 < 120ms - WebSocket bağlantı uptime: %99.4 - SwiftUI view recomputation optimizasyonu: %40 daha az gereksiz rerender (EquatableView ile) App Store İncelemeleri: - "Sabah kahvemi yolda sipariş verip ofise geldiğimde hazır alıyorum. Hayatımı değiştirdi, gerçekten. Sıra beklemek tarihe karıştı." — ★★★★★ - "Sadakat programı çok iyi tasarlanmış, altın seviyeye ulaşmak için motivasyon veriyor. Bedava kahve almak harika." — ★★★★★ - "İçeceğimi tam istediğim gibi özelleştirebiliyorum — yulaf sütü, az şeker, ekstra shot. Her seferinde mükemmel." — ★★★★★ - "Mağaza yoğunluk göstergesi çok pratik, sakin olan şubeye gidiyorum. Gerçek zamanlı bilgi." — ★★★★☆

Öğrenilen Dersler

7 aylık bu kapsamlı proje boyunca SwiftUI'nin kurumsal ölçekte kullanımına ve kahve sektörüne özgü birçok değerli teknik ve ürün dersi çıkardım: SwiftUI Kurumsal Ölçek Deneyimi: 223+ dosyalık bu proje, SwiftUI'nin büyük projelerde kullanılabileceğini kanıtladı — ama dikkatli optimizasyon şart. En kritik öğrenimler: (1) @StateObject vs @ObservedObject seçimi performansı doğrudan etkiler — yanlış kullanım gereksiz ViewModel yeniden oluşturma tetikler, (2) EquatableView protocol implementasyonu view body recomputation'ı %40 azalttı, (3) GeometryReader her frame'de çağrılıyor — mümkünse PreferenceKey ile alternatif çözüm kullanılmalı, (4) NavigationStack'ın NavigationView'a göre memory yönetimi çok daha iyi — büyük projelerde migration kritik. Bu deneyim, SwiftUI'nin UIKit'i tam olarak replace edemeyeceğini ama doğru optimizasyonla kurumsal ölçekte başarıyla kullanılabileceğini gösterdi. Combine vs Swift Concurrency: Proje ortasında Swift Concurrency (async/await) olgunlaştı ve yeni modüllerde Combine yerine tercih ettik. Combine'ın Publisher/Subscriber modeli karmaşık reactive pipeline'lar için hala güçlü, ama basit async işlemler için async/await çok daha okunabilir. Hibrit yaklaşım en pragmatik: mevcut Combine pipeline'larını bozmadan yeni kodu async/await ile yazmak. En büyük öğrenim: Combine'ın memory leak potansiyeli (AnyCancellable set yönetimi) async/await'te yok — bu tek başına yeterli bir geçiş motivasyonu. Real-Time UX Beklentileri: Kullanıcılar sipariş verdikten sonra gerçek zamanlı güncelleme bekliyor — 15 saniyelik bile bir gecikme "uygulama çalışmıyor" algısı yaratıyor. WebSocket bağlantısı zorunlu, polling yeterli değil. Ama WebSocket bağlantı yönetimi karmaşık: arka plana geçişte bağlantı kopuyor, tekrar ön plana geldiğinde state senkronizasyonu gerekiyor. Çözüm: ön plana geçişte son bilinen state'ten başla + immediate API call ile güncel state al + WebSocket yeniden bağlan. Bu 3 adımlı yaklaşım kullanıcıya kesintisiz deneyim sunuyor. Gamification Tuzakları: Sadakat programında gamification unsurları (seviye, rozet, streak) dikkatli dengelenmeli. Çok kolay → değersiz hissettiriyor, çok zor → motivasyon kırıyor. A/B test verileriyle optimize edilen seviye eşikleri: Bronz (0-100 puan, kolay başlangıç), Gümüş (100-500, orta zorluk), Altın (500+, sadık müşteri ödülü). En etkili gamification unsuru: streak (ardışık gün satın alma) — 7 günlük streak'te %2x puan çarpanı, kullanıcıların %35'i streak korumak için ekstra ziyaret yapıyor. QR Kod UX İncelikleri: QR kod gösteriminde iki kritik detay: (1) Ekran parlaklığını otomatik maksimuma çıkarmak — karanlık ortamda okuyucu tarayamıyor, (2) QR kod boyutu minimum 200x200pt — küçük QR daha yavaş taranıyor. Güvenlik: QR içeriğinde encrypted token + 5 dakika TTL → replay attack önleme. Bu detaylar küçük görünse de günlük 2.800+ işlemde müşteri deneyimini doğrudan etkiliyor.

Proje Bilgileri

RolLead iOS Developer
Takım5 kişi
Yıl2024
Süre7 ay
MimariMVVM + Combine + SwiftUI
Platformlar
iOS

Teknolojiler

SwiftUICombineCoreLocationMapKitPush NotificationsQR CodeSwift Concurrency

Paylaş

İlgili Projeler

Yeme & İçme

Cook AI

Yapay zeka ile malzeme tanıma, kişisel diyet planı oluşturma, adım adım görsel tarif rehberliği ve beslenme analizi sunan akıllı mutfak asistanı.

İlgili Yazılar

SwiftUI

SwiftUI'da Performance Optimizasyonu

SwiftUI uygulamalarınızı hızlandırmanın 15 etkili yolu. View lifecycle, state management ve lazy loading teknikleri.

15 dk
SwiftUI

SwiftUI Navigation Sistemi: Deep Linking ve Coordinator Pattern

NavigationStack'in ötesine geçin! Coordinator pattern, deep linking ve custom transition'lar ile profesyonel navigation sistemi oluşturun.

22 dk
SwiftUI

SwiftUI Charts ile Data Visualization

iOS 16+ Charts framework ile etkileyici grafikler oluşturun. Line, bar, pie chart örnekleri ve custom styling.

16 dk
Bir Sonraki Adım

Benzer Bir Proje mi Düşünüyorsunuz?

12+ yıllık mobil geliştirme deneyimimle hayalinizdeki uygulamayı birlikte hayata geçirelim.

Ücretsiz Teklif AlınProjelerimi İnceleyin

İlk görüşme tamamen ücretsizdir

Önceki Proje

Yakıt Pay

Finans & Ödeme
Sonraki Proje

Alfy

Seyahat & Ulaşım

İlgili Blog Yazıları

Tüm Yazıları Gör
Swift

Combine Framework Mastery: Reactive Programming iOS'ta

Apple'ın Combine framework'ü ile reactive programming. Publishers, Subscribers, Operators, error handling ve SwiftUI entegrasyonu.

22 dk
iOS

WebSocket ile Real-time iOS Uygulamaları: Chat ve Live Updates

URLSessionWebSocketTask ile real-time iletişim. Chat uygulaması, presence sistemi, reconnection stratejileri ve Combine entegrasyonu.

20 dk
AR/VR

ARKit ile Artırılmış Gerçeklik: Sıfırdan İleri Seviye

ARKit ve RealityKit ile immersive AR deneyimleri oluşturun. Plane detection, image tracking, face tracking ve LiDAR entegrasyonu.

24 dk

İlgili Karşılaştırmalar

Tüm Karşılaştırmaları Gör
iOS

SwiftUI vs UIKit

Apple'ın modern deklaratif framework'ü SwiftUI ile battle-tested UIKit arasındaki kapsamlı karşılaştırma. 2025'te hangi framework'ü seçmelisiniz?

10 dk okuma
iOS

Combine vs Async/Await

Apple'ın reaktif framework'ü Combine ile Swift 5.5'te gelen native eşzamanlılık modelini karşılaştırıyoruz. Hangi yaklaşım modern Swift için daha uygun?

9 dk okuma
Tüm Projeleri Gör

Muhittin Çamdalı

iOS, Flutter ve modern mobil teknolojilerle dünya standartında uygulamalar geliştiriyorum

İstanbul
Yeni projeler için müsaitim

Hızlı Bağlantılar

  • Ana Sayfa
  • Hakkımda
  • Projeler
  • Blog
  • Teklif Al
  • İletişim
  • Özgeçmiş
  • GitHub
  • Karşılaştırmalar
  • Kaynaklar
  • Okuma Listesi
  • Duvar Kağıtları
  • Kod Snippets
  • Araç Kutusu
  • Playground
  • Dashboard

Sosyal Medya

RSS Beslemesi
Changelog•Colophon•Credits•Status•RSS•Gizlilik•Çerez Politikası•Koşullar•KVKK Aydınlatma•Telif Hakkı•

Bülten

Yeni yazılar ve projeler için haftalık bültene abone olun.

© 2026 Muhittin Çamdalı. Tüm hakları saklıdır.•Blog: CC BY-NC-SA 4.0 | Code: MIT•

•

İstanbul, Türkiye 🇹🇷