Ekrana Dokunmadan Çizim: Monnom’un Çalışma Mantığı ve Bulut Mimarisi
Monnom iOS uygulamasının Apple Vision Framework tabanlı el takibi sistemi, cihaz içi veri işleme mimarisi ve Firebase bulut senkronizasyonu altyapısı.

Monnom, iOS cihazların kamerasını ve görüntü işleme (Computer Vision) kapasitesini kullanarak fiziksel hareketleri dijital çizimlere dönüştüren bir uygulamadır. Geleneksel dokunmatik ekran deneyiminin ötesine geçerek, cihazın yerel donanım gücüyle havada çizim yapılmasına olanak tanır.
Uygulamanın temel özellikleri ve bu özellikleri destekleyen mühendislik yaklaşımları şu şekildedir:
1. Görüntü İşleme (Computer Vision) ve Temel İşlevler
Uygulamanın ana mekaniği, kullanıcının başparmak ve işaret parmaklarını birleştirerek oluşturduğu ("Pinch") hareketini algılamasına dayanır.
- El ve Hareket Takibi: Apple'ın Vision Framework'ü kullanılarak saniyede onlarca kare analiz edilir. Kameradan alınan ham ve normalize edilmiş koordinatlar, cihazın dikey/yatay konumuna ve ekran oranına göre anlık olarak hesaplanıp ekrana yansıtılır.
- Renk Eşleştirme (Color Match): Kullanıcılar ellerine aldıkları renkli bir nesneyi fırça olarak kullanabilir. Kamera grenlerinin rengi bozmasını engellemek için tek piksel yerine 7x7 piksellik bir alanın renk ortalaması alınır. Parmakların nesne arkasında kalması (occlusion) durumunda sistem, elin diğer eklem noktalarını referans alarak çizimin kesilmesini engeller.
- Yüz Boyama (Face Paint) ve Optimizasyon: Artırılmış gerçeklik (AR) prensipleriyle yüz hatlarına çizim yaparken arayüz performansını korumak için doğrudan kaplama (Direct Overlay) mimarisi kullanılır. Hesaplamalar ana iş parçacığını (Main Thread) meşgul etmemek adına izole edilmiş seri bir kuyrukta yapılır.
2. Esnek Kimlik Doğrulama ve Veri Göçü
Uygulama başlangıçta tamamen cihaz içi (on-device) çalışacak şekilde tasarlanmıştır. Farklı cihazlar arasında veri senkronizasyonu için Firebase ve Google Cloud altyapısına geçiş yapıldığında, kullanıcı deneyimini bölmemek adına esnek bir kimlik doğrulama sistemi kurulmuştur.
- Giriş Yöntemleri:
CryptoKitile güvenliği sağlanan Apple ile Giriş ve standart e-posta/şifre adımları desteklenir. - Kayıpsız Veri Göçü (Data Migration): Uygulama hesap oluşturmadan (Misafir Modu) da kullanılabilir. Misafir modunda oluşturulan yerel veritabanı kayıtları, kullanıcı hesap oluşturduğu anda sistem tarafından taranır ve hiçbir veri kaybı yaşanmadan yeni hesaba entegre edilerek buluta aktarılır.
3. Çift Yönlü Bulut Senkronizasyonu
Cihazlar arası veri eşitlemesi, yerel veritabanı ile bulut (Firestore ve Firebase Storage) arasında çift yönlü olarak çalışır. Bu aşamada uygulanan teknik standartlar şunlardır:
- Saydamlık Koruması (Alpha Channel): Çizimlerin şeffaf arka plan verisini korumak için veri yüklemelerinde görsel sıkıştırması kullanılmaz; dosyalar saydamlığı koruyan standart formatlarda aktarılır.
- Zaman Damgası Yönetimi: Cihazların yerel saat farklılıklarından kaynaklanan eşitleme hatalarını önlemek için veriler Firestore'a cihaz saatiyle değil, sunucu tabanlı zaman damgası (Timestamp) ile yazılır.
- Tetikleme Optimizasyonu: Senkronizasyon işlemi, uygulamanın ilk açılış anına değil, oturum durumunun kesin olarak doğrulandığı dinleyici (state listener) fonksiyonlarına bağlanmıştır. Bu sayede olası senkronizasyon çakışmaları (race condition) engellenir.
4. Dinamik İçerik Yönetimi (Sıfır Güncelleme Mimarisi)
Uygulamaya yeni oyun modları ve çizim paketleri eklemek için App Store onay sürecini beklememek adına "Sıfır Güncelleme" mimarisi kurulmuştur. Next.js ve Firebase Admin SDK kullanılarak geliştirilen özel bir yönetim paneli üzerinden yüklenen yeni içerikler, Firebase Remote Config aracılığıyla anında yayına alınır. iOS istemcisi bu değişiklikleri algılayarak yeni dosyaları cihazın yerel önbelleğine otomatik olarak indirir.
5. Veri Güvenliği ve Tam Kapsamlı Silme
Kullanıcı verilerinin güvenliği, Google Cloud üzerinde tanımlanan katı güvenlik kuralları ile sağlanır. Veriler izole edilmiş dizinlerde tutulur ve her kullanıcı yalnızca kendi verisine erişebilir. Kullanıcı hesabını silmek istediğinde ise backend üzerinde çalışan özel bir sunucu fonksiyonu (Server Action) tetiklenir. Bu fonksiyon; kimlik doğrulama kaydını, veritabanındaki tüm belgeleri ve depolama alanındaki tüm görselleri kalıcı ve geri döndürülemez şekilde siler.