İçeriğe geç

Kişisel proje · 2026

MoodUs

Asıl ürünün widget olduğu bir çift uygulaması: partnerinin nasıl hissettiğini ana ekranında ve kilit ekranında tek bakışta gör.

Rol
Tek geliştirici ve tasarımcı — marka, mimari, iOS ve Android widget'ları
Yıl
2026
Durum
Devam ediyor
Teknolojiler
React Native · Expo SDK 57 · TypeScript · Zustand · Firebase · Cloud Functions · SwiftUI WidgetKit · Expo native modules

Problem

Çiftler, uygulama açmadan birbirlerinin nasıl olduğunu sessizce bilmek istiyor. Uygulama sade kalıyor; ürünü widget taşıyor.

Yaklaşım

Widget'lar native olduğu için tek bir ortak widget durum sözleşmesi iki kez çiziliyor: iOS ana ve kilit ekranı için SwiftUI'da, Android için ana ekran widget'ı olarak. Özel bir Expo native modülü, uygulama ile iOS widget'ı arasında App Group üzerinden köprü kuruyor.

Veri katmanı, değiştirilebilir bir arayüzün arkasında önce sahte (mock) veriyle başladı; böylece Firebase daha yokken bütün uygulama çalıştı. Gerçek uygulama da ekranlara dokunmadan yerine oturdu. Firestore kuralları, eşleşme akışını kör katılım (blind join) mantığıyla doğruluyor.

Bilerek yepyeni bir Expo SDK'sı seçtim ve B planını yazdım: her native kütüphaneyi eklendiği anda doğrula, biri engel olursa sürümü düşür. Hiçbiri engel olmadı.

Nasıl akıyor

  1. 01

    A bir ruh hâli seçer

    Expo uygulaması · Zustand

  2. 02

    Firestore

    Tek çift dokümanı, gerçek zamanlı

  3. 03

    B'nin uygulaması

    Açıkken canlı dinleyici

  4. 04

    Ortak widget durumu

    Tek sözleşme · App Group / widget deposu

  5. 05

    Native widget'lar

    iOS ana + kilit ekranında SwiftUI · Android ana ekran

  6. 06 · Sıradaki

    Push ile yenileme

    Widget'ları arka planda günceller — sıradaki aşama

Neler geliştirdim

  • Anonim kimlik doğrulama ile davet koduyla eşleşme
  • Gerçek zamanlı ruh hâli, durum ve canlı sayaç
  • “Özledim” sayacı ve “birlikteyiz” durumu
  • iOS ana ve kilit ekranı widget'ları, Android ana ekran widget'ı
  • On adet yazılı mimari karar kaydı (ADR)

Şu anki durum

iOS ve Android'de canlı Firebase ile çalışıyor; widget'lar iki platformda da hazır: iOS ana ve kilit ekranı, Android ana ekranı. Simülatör ve emülatörde doğrulandı. Sıradaki adımlar: bildirimle (push) tetiklenen widget yenileme ve gerçek cihazda test.