Problem

Türkçe konuşan kullanıcılar için namaz vaktinden ilaç takibine, su tüketiminden uyku düzenine kadar günlük sağlık ve alışkanlık takibi genelde beş ayrı uygulamaya dağılıyor — her biri kendi arayüzü, kendi hatırlatma sistemiyle. Tek bir yerden, doğal dilde yönetilebilen bir sistem yoktu.

Çözüm

30'dan fazla modül içeren tek bir iOS uygulaması kurdum — namaz, ilaç, su, uyku, spor, diyet, görevler, finans, hatırlatmalar, günlük, ruh hali, sigara bırakma, deprem uyarısı ve daha fazlası. Her modül, "LocalAgent" adını verdiğim kural tabanlı bir Türkçe doğal dil işleme motoru üzerinden sohbetten de yönetilebiliyor: "dünkü uyku kaydını 7 saate güncelle" ya da "az önce eklediğim ilacı sil" gibi bir cümle, doğrudan SwiftData'da doğru kaydı bulup güncelliyor.

Modül sayısı arttıkça asıl zorluk arayüz oldu: kimse 30 modülü aynı anda görmek istemiyor. Bu yüzden modüller kategori kategori açılıp kapatılabiliyor, sık kullanılanlar favoriye alınıp ana ekrana sabitleniyor. Uygulamanın kapsamı geniş; günlük yüzeyi ise kullanıcının seçtiği kadar.

Teknoloji

SwiftUISwiftData@Observable AppState Kural Tabanlı NLP60+ Model Şeması

Öne Çıkan Detay

Uygulamanın açılış kurtarma zinciri, bir SwiftData store dosyasının "okunamaz" (cihaz kilitliyken) olmasıyla "bozuk" olmasını birbirinden ayırıyor — bu ikisi karıştırıldığında gereksiz yere veri sıfırlanabiliyor. Rehber önce okunamazlık kapısından geçiyor, ancak gerçekten bozuksa (ve sadece quick_check doğrulamasından geçen bir yedek varsa) atomik olarak kurtarmaya gidiyor; store dosyaları hiçbir otomatik akışta doğrudan silinmiyor, önce karantinaya taşınıyor.

Bu zincir, "her hata için sıfırla" gibi kestirme bir çözümden daha uzun sürdü — ama kullanıcının gerçek verisini koruyor.

Ekranlar

Rehber'in Bugün ekranı — miladi ve hicri tarihi gösteren karşılama kartı, gün ajandası ve öncelikler satırı, günlük skor halkası ve favoriye alınmış İlaç modülü kısayolu
Bugün ekranı — günün ajandası, skoru ve favori modüller tek bakışta.
Rehber'in Asistan sekmesi — uygulamanın günün durumunu Türkçe özetlediği, yedi gündür eksik olan sabah namazını uyarı olarak bildirdiği sohbet balonu ve altındaki hazır soru önerileri
Asistan — durum özeti ve eksik alışkanlık uyarısı, doğal dille.
Rehber'in Modüller ekranı — Planlama, İbadet ve Sağlık başlıkları altında listelenen Görevler, Hatırlatmalar, Namaz, İlaç ve Diyet modülleri; her satırda favori yıldızı ve Çıkar düğmesi
Modüller — kategori kategori aç, kapat, favorile.
Rehber'in Trendler ve Seriler ekranı — namaz, su, ruh hali, günlük, ilaç ve sigarasız serilerinin gün sayaçları ve her birinin bir sonraki rozete kalan süresi
Seriler — her modülün kendi gün sayacı ve rozet eşiği.

Benzer bir problemi konuşalım

Kapsamı belirsiz bir ürün fikri ya da dijitalleşmesi gereken bir süreç varsa, bir e-posta yeterli.