Vaka çalışması

Simple Fasting App: Yalın bir deneyimin arkasındaki mühendislik

Simple Fasting App, ürün sahipliğini ve SwiftUI geliştirmesini üstlendiğim bağımsız bir iPhone uygulaması. Kullanıcının bir oruç seansı başlatmasına, ilerlemesini izlemesine ve geçmiş kayıtlarını incelemesine odaklanıyor. Bu vaka, yalın bir arayüzün arkasında seans durumunu, sistem entegrasyonlarını ve sürüm kararlarını nasıl ele aldığımı anlatıyor.

Problem: Bir sayaçtan daha fazlası

Ekranda geçen süreyi göstermek, işin görünen kısmı. Kullanıcı başlangıç saatini değiştirdiğinde, süreyi yeniden belirlediğinde veya seansı erken bitirdiğinde geçmiş kaydı, bildirimler ve uygulama dışındaki göstergeler de bu kararla uyumlu kalmalı. Ürün kararım, bu karmaşıklığı kullanıcıya yeni ayarlar olarak yüklemek yerine uygulamanın içinde yönetmekti.

Rolüm ve çalışma sınırı

Ürün yönünü, SwiftUI geliştirmesini, QA önceliklerini ve sürüm hazırlığını birlikte yürütüyorum. Codex; kod inceleme, uygulama, test hazırlığı ve sürüm belgelerinde destek sağlıyor. Hangi davranışın doğru olduğuna karar vermek ve bir sürümü yayımlamak ise ayrı sorumluluklar: ürün muhakemesi ve yayın onayı bende kalıyor.

Karar: Ekranı, veriyi ve sistem entegrasyonlarını ayırmak

Projede görünüm, ViewModel, repository ve service katmanlarını ayrı tutuyorum. Görünüm kullanıcı etkileşimini sunarken kalıcı veri repository katmanında; bildirim, Widget ve Live Activity işlemleri ilgili servislerde ele alınıyor. Böylece bir seans değişikliğini yalnız ekrandaki sayaç üzerinden değerlendirmiyorum.

Widget tarafında başlangıç ve bitiş zamanı gibi seans bilgileri paylaşılan duruma aktarılıyor. İlerleme hesabı geçerli başlangıç–bitiş aralığını kullanıyor, geçersiz veride kontrollü bir süreye dönüyor ve gösterilen ilerlemeyi sınırlandırıyor. Zaman çizelgesi de seansın bitişini hesaba katıyor. Bu, sürekli arka plan çalışması varsaymak yerine açık zaman verileriyle davranış tasarlamak anlamına geliyor.

Karar: Kontrolleri kullanıcı akışı etrafında toplamak

Test kapsamını yalnız bir ekranın görünümüne göre kurmuyorum. Başlangıç saatinin düzenlenmesi, sürenin değişmesi, erken bitirme ve tamamlanma gibi geçişler; ana uygulama, Widget, bildirim ve Live Activity açısından birlikte değerlendiriliyor. Kaynak kodda zaman ve ilerleme hesapları için odaklı testler bulunuyor. Cihaz kontrolleri ise ayrı bir doğrulama katmanı; birim testi, kilit ekranındaki gerçek davranışın yerine geçmiyor.

Sonuç ve sınırlar

Simple Fasting App, App Store’da yayımlanmış bir ürün. Widget ve Live Activity özellikleri hem mağaza açıklamasında hem proje kaynaklarında yer alıyor. Buradaki somut çıktı, yalnız bir prototip değil; geliştirme ve sürüm sorumluluğunu taşımaya devam ettiğim bir uygulama.

Bu vaka sağlık sonucu, kilo kaybı veya tıbbi fayda iddiası içermiyor. Ayrıca mevcut testlerin varlığını bütün cihazlarda kusursuz çalışma garantisi olarak sunmuyorum. Benim için temel ders şu: yalın bir ürün deneyimi, arka plandaki sorumlulukların da açık ve test edilebilir olmasını gerektiriyor.

Projeyi incele