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.
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.
Sunucu altyapısı olarak Supabase (PostgreSQL + dosya depolama) kullanılır.
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.
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.
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.
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.
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.
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çenek | Anlamı |
|---|---|
| Gizli (varsayılan) | Profil verin sunucuya hiç gönderilmez. |
| Arkadaşlar | Yalnız eşleşme isteğin karşılıklı kabul edilmiş kişiler görebilir. |
| Herkes | Kimliğ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.
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.
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ığı:
İ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.
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.
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:
Uygulama çöktüğünde sorunu bulabilmek için Firebase Crashlytics kullanılı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.| 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.
Uygulama 13 yaşın altındaki çocuklara yönelik değildir ve bu yaş grubundan bilerek veri toplamaz.
| İ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.
Bu politika değişirse, güncellenmiş sürüm bu sayfada yayınlanır ("Son güncelleme" tarihi güncellenir).
Sorularınız için: kaanalperkaraaslan@gmail.com