Gizlilik Politikası — CouldBeFit

Son güncelleme: 10 Ağustos 2026

CouldBeFit ("uygulama"), bir vücut geliştirme ve beslenme ajandasıdır. Bu belge, uygulamanın hangi verileri nasıl işlediğini açıklar.

Temel ilke — cihaz öncelikli: antrenman geçmişin, öğün kayıtların, programın ve profil bilgilerin öncelikle senin cihazında, yerel bir veritabanında (Room/SQLite) tutulur. Uygulamanın çekirdek işlevleri internet olmadan çalışır.

Bunun yanında açıkça kullandığın bazı özellikler sunucu gerektirir: mesajlaşma, hoca eşleşmesi, liderlik tablosu, düellolar ve bulut yedeği. Bu belge hangi verinin ne zaman cihazdan çıktığını tek tek açıklar.

Uygulamada reklam SDK'sı yoktur, analitik/izleme (Google Analytics, Firebase Analytics vb.) yoktur, reklam kimliği okunmaz. Hiçbir veri satılmaz veya pazarlama amacıyla üçüncü taraflarla paylaşılmaz.


1. Hesabın nasıl oluşur

2. Cihazında kalan veriler

Aşağıdakiler yalnızca cihazında tutulur ve sen bulut yedeğini ya da profil paylaşımını açmadıkça cihazdan çıkmaz:

Uygulamayı kaldırdığında bunların tamamı cihazından silinir.

3. Sunucuya giden veriler

Sunucu altyapısı olarak Supabase (PostgreSQL + dosya depolama) kullanılır.

3.1. Kullanıcı dizini

Başka kullanıcıların seni kimliğinle bulabilmesi için şunlar saklanır: kısa kullanıcı kimliğin, açık anahtarın (public key), görünen adın, varsa profil fotoğrafın ve son etkinlik zamanın. Görünen adı sen belirlersin, boş bırakabilirsin.

Aynı cihazdan çok sayıda sahte hesap açılmasını tespit etmek için ayrıca cihaza ait geri döndürülemez bir özet (hash) saklanır; bu özetten cihaz kimliği geri elde edilemez.

3.2. Mesajlaşma

Mesaj gövdelerin sunucuda uçtan uca şifreli saklanır. Şifre çözme anahtarı senin ve karşı tarafın cihazlarındaki özel anahtarlardan türetilir; sunucuda bulunmaz ve mesajların içeriği tarafımızdan okunamaz. Sohbette gönderilen fotoğraflar da şifreli saklanır.

Sunucunun görebildiği şey üstveridir: hangi konuşmada, hangi zamanda, kaç mesaj olduğu.

3.3. Bildirim jetonu

Uygulama kapalıyken de mesaj bildirimi alabilmen için cihazının Firebase bildirim jetonu açık anahtarınla eşleşmiş biçimde saklanır. Bu jeton, Google'ın senin cihazına ulaşmak için kullandığı adrestir; içinde ad, konum ya da başka bir kişisel bilgi yoktur ve yeni kurulumda değişir.

Erişimi kilitlidir: jeton tablosu uygulamanın genel anahtarıyla ne okunabilir ne yazılabilir. Yazma yalnız sunucu tarafındaki bildirim servisinden geçer ve servis, yazmadan önce isteğin gerçekten o cihazın özel anahtarıyla imzalandığını doğrular — yani başkası senin satırına kendi jetonunu yazıp sana gelen bildirimleri üzerine alamaz.

Hesabını sildiğinde jetonun da silinir.

3.4. Liderlik tablosu

Liderlik tablosuna katılırsan güç puanın, siklet grubun, cinsiyetin, görünen adın ve varsa profil fotoğrafın herkese açık listelenir — bu bölüm tanımı gereği geneldir. Her satır cihazının özel anahtarıyla imzalanır; başkası senin adına satır yazamaz.

3.5. Hoca eşleşmesi ve arkadaşlık

Gönderdiğin ve aldığın eşleşme istekleri (kimden kime, tür, durum) saklanır ve çift taraflı imzalanır. Hoca başvurusu yaparsan başvurun saklanır.

3.6. Profil paylaşımı (varsayılan: kapalı)

Mesajlarda ve liderlik tablosunda birinin profil fotoğrafına dokunarak profilini açabilirsin. Bunun için kendi profilini paylaşman gerekir ve bu varsayılan olarak KAPALIDIR.

Ayarlar → Profil görünürlüğü üç seçenek sunar:

SeçenekAnlamı
Gizli (varsayılan)Profil verin sunucuya hiç gönderilmez.
ArkadaşlarYalnız eşleşme isteğin karşılıklı kabul edilmiş kişiler görebilir.
HerkesKimliğini bilen herkes görebilir.

Gizli dışındaki bir seçeneği açtığında sunucuya şunlar yazılır: güç seviyen (rank), serin, son yedi günlük antrenman hacmin, antrenman günü sayın, güncel kilon ve boyun.

Profilindeki kutucuklara dokunulunca açılan detaylar için ayrıca şunlar gider: son yedi günün günlük hacim dizisi, seri dönemlerinin tarihleri, ve kas bölgelerinin güç puanları (vücut haritası). Vücut haritasının doğru figürle çizilebilmesi için cinsiyetin, profilin kendi renklerinde açılabilmesi için de tema tercihin taşınır.

Öğün kayıtların, antrenman geçmişin, kilo geçmişin, yaşın ve hedefin paylaşılmaz.

Üç şeyi bilerek böyle tasarladık:

Hesabını sildiğinde paylaşılan profilin de silinir.

3.7. Düellolar (1v1 canlı yarış)

Düello başlattığında sunucuya giden veriler: görünen adın, cihazının açık anahtarı, seçtiğin hareket ve süre, ve yarış boyunca tekrar sayın. Buna ek olarak, yarış sürerken birkaç saniyede bir "hâlâ buradayım" zaman damgası gönderilir; bu, rakibi uygulamadan çıktığında ya da bağlantısı koptuğunda maçın sonsuza kadar açık kalmaması içindir. Rakibin de aynı bilgileri görür — düellonun tamamı budur.

Plank düellosunda sayılacak tekrar olmadığı için gönderilen veri farklıdır: plank pozisyonunu tutup tutmadığın, ikinizin birden tuttuğu toplam süre ve ilk kimin düştüğü. Süreyi sunucu işletir; iki telefonun ayrı ayrı saydığı süre birbirinden ayrışıp kimin kazandığı tartışmalı hâle gelmesin diye. Tutma kararının kendisi (iskelet noktaları, gövde açısı) cihazından çıkmaz — sunucuya yalnız "tutuyor / tutmuyor" bilgisi gider.

Canlı görüntü

Düello sırasında kameran rakibinle canlı paylaşılır. Bu, uygulamanın geri kalanından farklı bir durumdur ve bilerek ayrı yazıyoruz: barkod, besin tablosu ve fotoğraftan kalori özelliklerinde görüntü cihazından hiç çıkmaz, düelloda çıkar.

Nasıl çalıştığı:

Tekrar sayımı

İskelet noktaları cihazdan çıkmaz. Tekrar sayımı tamamen telefonunda yapılır (ML Kit Poz Algılama); ağa giden tek şey ortaya çıkan sayıdır (plank düellosunda ise yalnız "tutuyor / tutmuyor" bilgisi). Kameranın üstünde gördüğün iskelet çizimi de aynı şekilde cihazında üretilir ve hiçbir yere gönderilmez; rakibin ekranında senin iskeletin görünmez.

Düello sonucu (galibiyet, mağlubiyet, beraberlik ve en yüksek skorun — plank düellolarında skor yerine en uzun tutma süren) düellolara ait ayrı bir sıralamada tutulur ve o sıralama herkese açıktır. Bu sayılar antrenman geçmişine, rankına veya haftalık hacmine yazılmaz — kamerayla sayma yaklaşık %85-90 doğrulukta olduğu için gerçek antrenman verini kirletmesine izin verilmez.

Eşleşme odaları geçicidir. Rastgele eşleşmede rakibin kim olduğunu seçemezsin; karşına adını ve düello sıralamasını gördüğün bir kullanıcı çıkar.

3.8. Bulut yedeği (isteğe bağlı, varsayılan KAPALI)

Ayarlardan bulut yedeğini açarsan verilerin buluta yedeklenir. Yedek AES-256-GCM ile şifrelenir ve şifreleme anahtarı yalnızca senin hesap kodundan türetilir — anahtar sunucuya hiçbir zaman gönderilmez. Sunucuda duran şey, bizim de okuyamadığımız bir şifreli metindir.

Yedeğin içeriği: profil ve kilo geçmişin, öğün kayıtların, programın, antrenman geçmişin (adım sayacından içe aktarılmış yürüyüşler dahil — bkz. madde 4) ve sohbet geçmişin.

4. Adım verisi (telefonun kendi adım sayacı)

Uygulama, isteğe bağlı olarak açabileceğin "Adım senkronu" özelliğiyle telefonunun kendi donanım adım sayacını (Sensor.TYPE_STEP_COUNTER) okuyabilir.

Health Connect KULLANILMIYOR. Uygulama daha önce Android'in Health Connect deposundan sağlık verisi okuyordu; bu yol tamamen kaldırıldı. Artık hiçbir android.permission.health.* izni istenmez, Health Connect uygulamasıyla hiçbir iletişim kurulmaz ve başka hiçbir uygulamanın verisine erişilmez.

Hangi veri okunur (yalnızca bu):

İzin Veri türü Ne için
ACTIVITY_RECOGNITION Telefonun adım sayacının değeri Günlük yürüyüşü antrenman olarak yazmak

Kalp atışı, uyku, tansiyon, konum, rota gibi hiçbir veri okunmaz — okunacak tek şey bir sayıdır.

Nasıl kullanılır:

Cihazdan çıkar mı: Adım sayacından okunan değer doğrudan hiçbir sunucuya gönderilmez. Ancak bundan üretilen yürüyüş antrenman setleri antrenman geçmişinin parçası olduğu için, bulut yedeğini açtıysan şifreli yedeğe dahil edilir (bkz. madde 3.7). Bulut yedeği kapalıyken bu veri cihazından hiç çıkmaz.

Kontrol ve silme:

5. Bildirimler

6. Kilitlenme (çökme) raporları

Uygulama çöktüğünde sorunu bulabilmek için Firebase Crashlytics kullanılır.

7. Ağ erişimi — başka ne zaman

  1. Barkod tarama: Bir ürün barkodu okuttuğunda besin değerlerini almak için Open Food Facts veri tabanına sorgu gönderilir. Gönderilen tek veri barkod rakamıdır (ör. 5449000000996); kimlik, konum veya öğün geçmişi gönderilmez, hesap/oturum/çerez yoktur. Kamera görüntüsü hiçbir zaman gönderilmez ve kaydedilmez — barkod çözümü tamamen cihazda (Google ML Kit, çevrimdışı model) yapılır ve kareler çözüldükten hemen sonra bellekten atılır. Open Food Facts verisi ODbL lisanslıdır; atıf ürünün gösterildiği ekranda belirtilir.
  2. Yerel yapay zekâ (isteğe bağlı): İstersen bir yapay zekâ modeli Hugging Face üzerinden bir kez indirilir. Bu, kimlik doğrulama gerektirmeyen düz bir dosya indirmedir; kullanıcı verisi göndermez. Model indikten sonra tamamen cihazda çalışır, sohbetlerin hiçbir sunucuya gitmez ve istediğin zaman silinebilir.
  3. Zorunlu güncelleme kontrolü: Açılışta, kurulu sürümün desteklenen en düşük sürümün altında olup olmadığı sorulur. Bu istekte kişisel veri gönderilmez.

8. Üçüncü taraf servisler

Servis Ne için Ne gönderilir
Supabase Mesajlaşma, kullanıcı dizini, liderlik, bulut yedeği Madde 3'teki veriler
Google Firebase (Cloud Messaging) Duyuru ve mesaj bildirimleri Cihazın bildirim jetonu; bildirim içeriği gönderilmez
Google Firebase (Crashlytics) Çökme raporları Madde 6'daki veriler
Open Food Facts Barkod → besin değeri Yalnız barkod rakamı
Hugging Face Yapay zekâ modeli indirme Kullanıcı verisi gönderilmez

Tüm ağ trafiği HTTPS üzerinden şifrelenir; uygulama açık metin (şifresiz) bağlantı kurmaz.

9. Veri saklama ve silme

10. Çocukların gizliliği

Uygulama 13 yaşın altındaki çocuklara yönelik değildir ve bu yaş grubundan bilerek veri toplamaz.

11. İzinler

İzin Amaç
INTERNET Madde 3, 5, 6 ve 7'deki özellikler
ACCESS_NETWORK_STATE Bağlantı durumunu kontrol etmek (yedek/senkron ne zaman denensin)
CAMERA Barkod tarama, besin değeri tablosu okuma, düelloda tekrar sayma ve düelloda canlı görüntü, profil fotoğrafı, sohbette fotoğraf gönderme. Barkod/tablo/fotoğraf akışlarında görüntü cihazdan çıkmaz ve kaydedilmez. DÜELLO İSTİSNADIR: orada görüntü rakibinle canlı paylaşılır (bkz. madde 3.5) — yine de kaydedilmez ve ses hiç yoktur. İzin isteğe bağlıdır; reddedilirse barkod elle girilebilir ve düello videosuz oynanır.
POST_NOTIFICATIONS Hatırlatma ve duyuru bildirimleri
FOREGROUND_SERVICE, FOREGROUND_SERVICE_DATA_SYNC Yapay zekâ modeli indirilirken indirmenin kesilmemesi
ACTIVITY_RECOGNITION Yalnızca "Adım senkronu" için (madde 4)

Konum, mikrofon, kişiler ve telefon durumu gibi hiçbir başka izin istenmez — düelloda canlı görüntü olmasına rağmen mikrofon izni yoktur ve ses hiç iletilmez. Kamera izni yalnızca kullanıcı ilgili işlemi başlattığında gerekçesiyle sorulur; uygulama açılışında istenmez. Adım sayacı izni yalnızca "Adım senkronu" açıldığında, Android'in sıradan izin penceresinden istenir; reddedilirse özellik kapalı kalır ve bunu ayarlar ekranında açıkça söyler.

12. Değişiklikler

Bu politika değişirse, güncellenmiş sürüm bu sayfada yayınlanır ("Son güncelleme" tarihi güncellenir).

13. İletişim

Sorularınız için: kaanalperkaraaslan@gmail.com