Ne işe yarar (iş diliyle)
Fabrika, depo, şantiye gibi sinyalin kesildiği yerlerde uygulama “çalışmadı, tekrar dene” demez. Kullanıcı işini yapmaya devam eder; yaptığı her işlem cihazda güvenle kuyruğa alınır ve bağlantı gelir gelmez sunucuya gönderilir. Ekranda gördüğü liste de son bilinen hâliyle açılır — boş ekranla kalmaz. İş açısından önemi: saha ekibi bağlantıya bağımlı olmadan çalışır, hiçbir kayıt kaybolmaz.
Hangi müşteri/projelerde işe yarar
- İnşaat/tesis/fabrika sahasında telefon/tablet kullanan ekipler.
- Lojistik/teslimat, depo sayımı, saha denetimi gibi bağlantının garanti olmadığı işler.
- “İnternet gidince uygulamam durmasın” diyen her mobil-öncelikli iç araç.
Nasıl çalışır (kısa, sade)
Uygulama bir web uygulaması ama telefona kurulabilir (PWA). Uygulamanın kabuğu ve son okunan veriler cihazda saklanır; çevrimdışıyken ekran yine açılır ve “çevrimdışı — son bilinen durum” uyarısı gösterir. Kullanıcının yazma işlemleri (bir adımı tamamlama, fotoğraf) bir kuyruğa (outbox) yazılır; her komut tekil bir kimlik taşır, böylece bağlantı koptuğunda tekrar gönderilse bile işlem iki kez işlenmez.
Olgunluk
canlida-kanitlanmis — Mod ERP’de çimento fabrikası sahasında çalışıyor; offline-first hem “yazma” (outbox) hem “okuma” (önbellek) yarısıyla kurulu. Genel bir çözüme paketlemek için outbox senkron mantığı ayrı bir kütüphaneye çıkarılabilir.
Teknik (geliştiriciler için)
mod-erp · service worker (apps/web/src/sw.ts, Workbox injectManifest): uygulama kabuğu precache,
API okumaları NetworkFirst (4 sn timeout) + X-Mod-Onbellek işareti, fotoğraflar ayrı CacheFirst
önbellek. Yazma tarafı: her komut clientCommandId (uuid) taşır; sunucuda processed_commands tablosu
- interceptor idempotency sağlar (ağ koptuğunda cevap kaybolsa da tekrar deneme tek iş üretir). Çıkışta önbellek temizlenir (ortak cihazda sonraki kullanıcı öncekinin verisini görmesin). Sınır: gerçek local-first okuma modeli (Dexie üzerinden) faz olarak planlı; bugün okuma önbelleği HTTP düzeyinde.