diff --git a/docs/ekip-raporlari/2026-10-05/cerez-uyum.md b/docs/ekip-raporlari/2026-10-05/cerez-uyum.md
new file mode 100644
index 0000000..42ac5df
--- /dev/null
+++ b/docs/ekip-raporlari/2026-10-05/cerez-uyum.md
@@ -0,0 +1,133 @@
+# Çerez ve analitik uyumu (5 Ekim 2026)
+
+Soru: Rybbit ile ölçüm yapıyoruz, çerez izni istemiyoruz. Yasal mı, ne eksik?
+
+**Sonuç:** Onay penceresi (kabul/ret) gerekmiyor. Ama aydınlatma eksikti ve Rybbit
+panelinde üç ayar politikanın söylediğiyle uyuşmalı. Kod tarafı yapıldı; panel
+tarafı Bilal'de (en altta).
+
+> Bu bir avukat görüşü değildir. Kaynak metinler okunarak hazırlandı; yayından önce
+> bir KVKK avukatına 30 dakikalık okuma yaptırmak makul.
+
+## 1. Hukuki çerçeve
+
+| Kaynak | Bize etkisi |
+|---|---|
+| **5809 sayılı Elektronik Haberleşme Kanunu md. 51/3** (cihaza bilgi yazma → açık rıza) | **Uygulanmaz.** Yalnız BTK yetkili "işletmeciler" için. Rehber bunu açıkça söylüyor (§3): site operatörleri kapsam dışı. Türkiye'de AB'deki ePrivacy md. 5/3'ün genel karşılığı yok. |
+| **KVKK (6698) md. 4, 5, 10, 11, 12** | **Uygulanır.** Çerez ya da ölçümle kişisel veri işleniyorsa hukuki sebep (md. 5) ve aydınlatma (md. 10) gerekir. |
+| **KVKK Çerez Uygulamaları Hakkında Rehber, Temmuz 2025 (Yayın No 69)** | Asıl referans. Bağlayıcı değil ama Kurul kararları bunu izliyor. |
+| **Kurul kararı 2020/173** ve 2022'deki 300 bin TL'lik çerez cezası | İkisi de rızasız **reklam/üçüncü taraf analitik** çerezi + aydınlatma yokluğu. Bizim durumumuz değil. |
+| **GDPR / ePrivacy** | Site Türkçe, Türkiye'deki YKS adaylarına yönelik; AB'ye hizmet sunma ya da AB'dekileri izleme yok → GDPR md. 3/2 kapsamında değiliz. AB'ye açılırsak `rybbit-user-id` yazımı ePrivacy'de rıza ister; o gün yeniden bakılır. |
+
+### Rehberin bizi ilgilendiren üç hükmü
+
+1. **§5.9 — Birinci taraf analitik çerezler "Kriter B" (rıza gerekmeyen) sayılır.**
+ 2022 sürümünde analitik rıza istiyordu; Temmuz 2025 güncellemesi bunu değiştirdi.
+ Şartları: yalnız kitle ölçümü, veri ölçülü olmalı ve IP maskelenmeli, **yalnız
+ anonim istatistik** üretilmeli, siteler arası takip olmamalı, süre makul olmalı,
+ veri üçüncü tarafa gitmemeli.
+2. **§1.2 — local storage, parmak izi, piksel için rehber yönlendirme yapmıyor.**
+ Yani "çerezsiz" olmak bizi kapsam dışına çıkarmaz ama rıza da doğurmaz; genel
+ KVKK md. 5 değerlendirmesi yapılır (aşağıdaki denge testi).
+3. **§9 — Aydınlatma, hukuki sebepten bağımsız olarak siteye girişte yapılmalı**
+ ("pop-up gibi bir bilgilendirme yoksa aydınlatma yükümlülüğüne aykırılık gündeme
+ gelebilir") ve çerezin adı, amacı, süresi, birinci/üçüncü taraf oluşu yazılmalı.
+ Gizlilik metninin içine gömülü tek paragraf yeterli sayılmıyor.
+
+## 2. Sitede gerçekte ne var (koddan ve canlı betikten doğrulandı)
+
+- **Çerezler (hepsi birinci taraf, zorunlu):** better-auth oturum çerezleri,
+ `kolaytercih.profil`, `kolaytercih.liste-sayi`. Reklam/üçüncü taraf çerez yok.
+- **Rybbit:** kendi sunucumuzda, sunucu Türkiye'de (178.211.130.206, Pentech/Bursa)
+ → yurt dışı aktarım yok. Çerez yazmıyor. Ama canlı betik (`/api/script.js`)
+ incelendiğinde:
+ - Her ziyaretçide localStorage'a `rybbit-visitor-id` yazıyor (yalnız feature flag
+ açıkken gönderilir; bizde kapalı → gönderilmiyor).
+ - Girişte localStorage'a `rybbit-user-id` yazıyor ve her olaya ekliyor.
+ - Anonim ziyaretçiyi IP + tarayıcı bilgisinin özetiyle tanıyor.
+ - Panel ayarı (herkese açık `tracking-config` ucundan okundu): `trackCopy: true`,
+ `trackFormInteractions: true`, `trackButtonClicks: true`, `trackUrlParams: true`,
+ `trackErrors: true`, `webVitals: true`, `sessionReplay: false`.
+- **Bulgu A — kopyalama izleme açık.** Kullanıcının kopyaladığı metnin ilk 500
+ karakteri Rybbit'e gidiyor. Danışman cevabını ya da kendi mesajını kopyalayan
+ öğrencinin metni analitiğe düşer. "Kitle ölçümü" sınırını aşar; **kapatılmalı.**
+- **Bulgu B — gizlilik metni eskimişti.** "E-posta adresin ve adın analitiğe
+ kaydedilir" diyordu; kod 21 Eylül'den beri (c055e82) yalnız kimlik numarası
+ gönderiyor. Metin düzeltildi. Rybbit'te o tarihten önce yazılmış e-posta/ad
+ kayıtları duruyorsa silinmeli.
+- **Bulgu C — form izleme zararsız.** Yalnız alan adı/türü gidiyor, değer gitmiyor.
+- Ham sıralama: sayfa adreslerinde artık `?sira=` taşınmıyor (yalnız `/api/…`
+ çağrılarında; Rybbit bunları görmez), `/sonuc` maskeli. Eski satırlar panelde
+ duruyor olabilir (BACKLOG #31).
+
+## 3. Meşru menfaat denge testi (KVKK md. 5/2-f)
+
+Rehber §4 bu testi yapmayı tavsiye ediyor; kayıt olarak burada dursun.
+
+- **Menfaat:** sitenin hangi sayfalarının kullanıldığını, sihirbazın nerede
+ bırakıldığını ve hataları görmek. Gerçek, güncel, hukuka uygun.
+- **Zorunluluk:** bu bilgi ölçüm olmadan elde edilemiyor; daha az veriyle çalışan
+ bir yol seçildi (çerez yok, IP saklanmıyor, sıralama bantlı, hassas adresler
+ maskeli, ekran kaydı kapalı, veri kendi sunucumuzda).
+- **Kişiye etkisi:** düşük. Siteler arası takip yok, reklam yok, profil
+ çıkarılmıyor, üçüncü tarafa aktarım yok. Makul beklenti içinde.
+- **Güvenceler:** ayrı çerez politikası, ilk ziyarette bilgilendirme, tek tıkla
+ kapatma (itiraz hakkı), e-posta/ad analitikte yok.
+- **Zayıf nokta:** girişli kullanıcının ziyareti hesap kimliğiyle eşleşiyor. Bu
+ "anonim istatistik" değil, takma adlı veri; §5.9'un en dar okumasının dışında.
+ Savunması: yalnız hesabı olan kullanıcıda, yalnız kendi sitemizde, açıkça
+ bildirilmiş, kapatılabilir. **Kalan risk: düşük-orta.** Sıfıra indirmek istersek
+ `RybbitIdentify` kaldırılır; bedeli "sihirbaz → giriş → ödeme" hunisinin kişi
+ bazında birleşmemesi.
+- **18 yaş altı:** kitlenin bir kısmı 17 yaşında. Ölçüm pazarlama için
+ kullanılmadığından ek rıza doğmuyor; metin sade dille yazıldı (Rehber §9).
+
+## 4. Yapılanlar (kod)
+
+- `src/app/cerez-politikasi/page.tsx` — çerez politikası + çerez aydınlatma metni
+ (ad, amaç, süre, taraf; ölçümün ne topladığı; hukuki dayanak; yönetim).
+- `src/components/olcum-tercihi.tsx` — "Ölçümü kapat" düğmesi (Rybbit'in kendi
+ `disable-rybbit` kapısı; kimlik kayıtlarını da siler).
+- `src/components/cerez-bilgi.tsx` + `layout.tsx` — ilk ziyarette bir kez görünen
+ bilgi bandı. Kabul/ret yok, çünkü sorulan rıza yok.
+- `src/app/gizlilik/page.tsx` — "Çerezler ve analitik" bölümü gerçeğe göre düzeltildi.
+- Alt bilgiye ve `sitemap.ts`'e sayfa eklendi.
+
+## 5. Bilal'in yapacakları
+
+**Yayından önce (politika bunları doğru varsayıyor):**
+
+1. Rybbit paneli → site ayarları → **kopyalama izlemeyi (Copy) kapat.** Doğrulama:
+ `curl -s https://rybbit.kolaytercih.com/api/site/tracking-config/f2cb042c657e`
+ çıktısında `"trackCopy":false` görünmeli.
+2. Aynı ekranda **IP adresi saklama (Track IP Address) kapalı** mı bak (varsayılan
+ kapalı). Açıksa kapat.
+3. **Oturum kaydı (Session Replay) kapalı kalsın.** Açılacaksa önce politika ve
+ denge testi güncellenir.
+
+**Yakın zamanda:**
+
+4. Rybbit kullanıcılar ekranında 21 Eylül öncesinden kalan **e-posta/ad** kayıtları
+ varsa sil.
+5. "User ID Salting" ayarı: açılırsa anonim ziyaretçi kimliği her gün sıfırlanır
+ (en temiz hâl), bedeli girişsiz ziyaretçide "geri dönen" ölçümünün kaybı. Karar
+ senin; politika iki hâlde de doğru.
+6. Ölçüm verisi için saklama süresi belirle (öneri: 24 ay) ve belirleyince
+ politikaya yaz.
+7. Gizlilik sayfasındaki `[şirket unvanı ve adresi eklenecek]` hâlâ boş; çerez
+ politikası veri sorumlusu için o sayfaya atıf yapıyor.
+8. Bilgi bandını telefonda bir kez gözle kontrol et (alt kenarda, `KaydetBanner`
+ ile aynı yerde, onun üstünde açılır).
+
+## 6. Ne zaman onay penceresi gerekir
+
+Şunlardan biri eklendiği gün: Google Analytics / Meta Pixel / TikTok Pixel, reklam
+ya da yeniden hedefleme, gömülü YouTube/sosyal eklenti, Rybbit oturum kaydı, Rybbit
+bulut sürümüne geçiş (üçüncü taraf + yurt dışı). O gün "Kabul et" ile "Reddet"
+eşit görünürlükte olmalı ve rıza verilmeden betik yüklenmemeli.
+
+## Kaynaklar
+
+- KVKK, Çerez Uygulamaları Hakkında Rehber (Temmuz 2025): https://www.kvkk.gov.tr/Icerik/7353/Cerez-Uygulamalari-Hakkinda-Rehber
+- Erdem & Erdem, rehber güncellemesi notu (28.07.2025): https://www.erdem-erdem.av.tr/bilgi-bankasi/kisisel-verileri-koruma-kurumu-cerez-uygulamalari-hakkinda-rehberi-guncelledi
+- Rybbit site ayarları: https://rybbit.com/docs/site-settings
diff --git a/src/app/cerez-politikasi/page.tsx b/src/app/cerez-politikasi/page.tsx
new file mode 100644
index 0000000..9093739
--- /dev/null
+++ b/src/app/cerez-politikasi/page.tsx
@@ -0,0 +1,312 @@
+import type { Metadata } from "next";
+import Link from "next/link";
+import { Parallax } from "@/components/parallax";
+import { PagePixelDivider } from "@/components/pixel-decor";
+import { SiteFooter } from "@/components/site-footer";
+import { OlcumTercihi } from "@/components/olcum-tercihi";
+import { sayfaMetadata } from "@/lib/seo";
+
+export const metadata: Metadata = sayfaMetadata({
+ title: "Çerez Politikası",
+ description:
+ "KolayTercih çerez politikası ve çerez aydınlatma metni: hangi çerezler kullanılır, ziyaret ölçümü nasıl çalışır ve nasıl kapatılır.",
+ path: "/cerez-politikasi",
+});
+
+// Bu metin kodun ve Rybbit panel ayarlarının GERÇEKTE yaptığıyla birebir
+// örtüşmek zorunda. Aşağıdakilerden biri değişirse aynı commit'te güncellenir:
+// - çerez / localStorage / sessionStorage anahtarı eklenir ya da süresi değişir
+// (auth.ts, sihirbaz-profil.ts, liste-store.ts, tema-saglayici.tsx),
+// - layout.tsx'teki Rybbit betiğinin ayarı ya da paneldeki izleme ayarı
+// (kopyalama izleme, oturum kaydı, IP saklama) değişir,
+// - yeni bir üçüncü taraf betiği / gömülü içerik eklenir.
+// Açık rıza gerektiren bir çerez (reklam, yeniden hedefleme, üçüncü taraf
+// analitik, sosyal eklenti) eklenecekse ÖNCE onay penceresi kurulur.
+// Hukuki dayanak ve denge testi: docs/ekip-raporlari/2026-10-05/cerez-uyum.md
+
+type Kayit = { ad: string; amac: string; sure: string };
+
+const CEREZLER: Kayit[] = [
+ {
+ ad: "better-auth.session_token, better-auth.session_data",
+ amac: "Giriş yaptığında oturumunu açık tutar. Giriş yapmadıysan oluşmaz.",
+ sure: "Oturum çerezi 7 gün (kullandıkça yenilenir); önbellek çerezi 5 dakika",
+ },
+ {
+ ad: "kolaytercih.profil",
+ amac: "Sihirbazda girdiğin sıralama ve seçimleri (puan türü, alan, il, devlet/vakıf) taşır; sonuç sayfası senin sıralamana göre hazırlanır.",
+ sure: "1 yıl ya da sen profilini silene kadar",
+ },
+ {
+ ad: "kolaytercih.liste-sayi",
+ amac: "Listende kaç program olduğunu taşır; sayfa açılırken liste düğmesi doğru sayıyla gelir.",
+ sure: "1 yıl",
+ },
+];
+
+const DEPO: Kayit[] = [
+ {
+ ad: "kolaytercih.sihirbaz",
+ amac: "Sıralaman ve sihirbaz seçimlerin; yeniden girmek zorunda kalmaman için.",
+ sure: "Sen silene kadar",
+ },
+ {
+ ad: "kolaytercih.manuel-liste.v1",
+ amac: "Kendi eklediğin tercih listesi; giriş yapmadan da listen kaybolmasın diye.",
+ sure: "Sen silene kadar",
+ },
+ {
+ ad: "kt-tema",
+ amac: "Açık / koyu tema tercihin.",
+ sure: "Sen değiştirene kadar",
+ },
+ {
+ ad: "kolaytercih.cerez-bilgi",
+ amac: "Çerez bilgilendirmesini gördüğünü hatırlar; tekrar tekrar çıkmaz.",
+ sure: "Sen silene kadar",
+ },
+ {
+ ad: "disable-rybbit",
+ amac: "Ölçümü kapattıysan bu tercihini hatırlar.",
+ sure: "Sen ölçümü yeniden açana kadar",
+ },
+ {
+ ad: "rybbit-user-id",
+ amac: "Yalnız giriş yaptığında oluşur: hesabının rastgele kimlik numarası. Sihirbazdan girişe uzanan yolculuğun tek ziyaret olarak sayılmasını sağlar. E-postan ve adın bu kayda yazılmaz.",
+ sure: "Çıkış yapana ya da ölçümü kapatana kadar",
+ },
+ {
+ ad: "rybbit-visitor-id",
+ amac: "Ölçüm betiğinin tarayıcında ürettiği rastgele sayı. Bugünkü ayarlarımızda sunucuya gönderilmez.",
+ sure: "Sen silene ya da ölçümü kapatana kadar",
+ },
+ {
+ ad: "Sekme süresince tutulanlar (kolaytercih.olay.*, kolaytercih.kaydet-banner-kapali, kolaytercih.liste-senkron.*, kolaytercih.liste-taban.*)",
+ amac: "Aynı görüntülemenin iki kez sayılmaması, kapattığın hatırlatmanın geri gelmemesi ve listenin hesabınla bir kez eşitlenmesi için.",
+ sure: "Sekmeyi kapatınca silinir",
+ },
+];
+
+function KayitListesi({ kayitlar }: { kayitlar: Kayit[] }) {
+ return (
+
+ Reklam çerezi, izleme çerezi ya da başka şirketlerin analitik
+ çerezi kullanmıyoruz. Seni başka sitelerde takip eden hiçbir
+ şey yok.
+
+
+ Yalnız sitenin çalışması için gerekli çerezler var: oturumunu
+ açık tutan, sıralamanı ve listeni hatırlayan çerezler.
+
+
+ Hangi sayfaların okunduğunu saymak için kendi sunucumuzda
+ çalışan, çerez kullanmayan bir ölçüm aracı (Rybbit)
+ kullanıyoruz. İstersen aşağıdan tek tıkla kapatırsın.
+
+
+ Bu yüzden karşına “çerezleri kabul et” penceresi
+ çıkmıyor: onayını gerektiren bir çerez yok.
+
+
+
+
+
+
Bu metin neyi anlatıyor?
+
+ Çerez, bir sitenin tarayıcına bıraktığı küçük bir metin
+ dosyasıdır. Bu sayfa, kolaytercih.com’un tarayıcına ne
+ yazdığını, ziyaretini nasıl ölçtüğünü ve bunları nasıl
+ yönetebileceğini anlatır; 6698 sayılı Kişisel Verilerin Korunması
+ Kanunu’nun (KVKK) 10. maddesi kapsamındaki çerez aydınlatma
+ metnidir. Veri sorumlusu, diğer kişisel verilerin ve hakların
+ için{" "}
+
+ Gizlilik ve KVKK
+ {" "}
+ sayfasına bak.
+
+
+
+
+
Zorunlu çerezler
+
+ Bunlar olmadan giriş yapamaz, listeni göremezsin; senin istediğin
+ hizmetin çalışması için gereklidir. Hepsi kolaytercih.com
+ tarafından yazılır (birinci taraf). Hukuki dayanak: seninle
+ kurulan hizmet sözleşmesinin ifası ve meşru menfaatimiz (KVKK md.
+ 5/2-c ve 5/2-f).
+
+
+
+ Google ile ya da e-postandaki bağlantıyla giriş yaparken, giriş
+ tamamlanana kadar yaşayan kısa ömürlü güvenlik çerezleri de
+ kullanılabilir. Tarayıcın güvenli bağlantıda bu adların başına{" "}
+ __Secure- ekler.
+
+
+
+
+
Tarayıcında tutulan diğer kayıtlar
+
+ Bunlar çerez değildir; tarayıcının kendi deposunda durur ve
+ çerezlerden farklı olarak her istekte sunucuya gitmez. Yine de
+ bilmen için listeliyoruz.
+
+
+
+
+
+
Ziyaret ölçümü (Rybbit)
+
+ Siteyi geliştirebilmek için hangi sayfaların açıldığını ve
+ sihirbazın hangi adımında bırakıldığını sayıyoruz. Bunun için
+ açık kaynaklı Rybbit yazılımını Türkiye’deki kendi
+ sunucumuzda çalıştırıyoruz; veriler başka bir şirkete, reklam
+ ağına ya da yurt dışına gitmez.
+
+
+ Ne kaydedilir: açtığın sayfanın adresi, hangi
+ siteden geldiğin, tarayıcın, işletim sistemin, cihaz türün, ekran
+ boyutun, tarayıcı dilin, yaklaşık konumun (ülke ve şehir
+ düzeyinde), tıkladığın düğmeler ve dış bağlantılar, doldurduğun
+ form alanının adı (içine yazdığın değer değil), sayfa hızı
+ ölçümleri, tarayıcıda oluşan hata kayıtları ve sihirbaz adımı,
+ liste oluşturma, ödeme başlatma gibi adımların gerçekleşip
+ gerçekleşmediği.
+
+
+ Ne kaydedilmez: IP adresin saklanmaz; ziyaretleri
+ sayabilmek için IP adresin ve tarayıcı bilginden geri
+ döndürülemeyen bir özet üretilir. Başarı sıralaman ham hâliyle
+ gönderilmez, yalnız “50-100 bin” gibi geniş bir
+ aralık olarak kaydedilir; sıralamanı ve sipariş numaranı taşıyan
+ sayfa adresleri maskelenir. Forma ya da danışmana yazdıkların,
+ kopyaladığın metinler ve ekran kaydı alınmaz. E-postan ve adın
+ ölçüm aracına gönderilmez.
+
+
+ Giriş yaptıysan: ziyaretin hesabının rastgele
+ kimlik numarasıyla eşleştirilir. Böylece “sihirbazı
+ dolduranların kaçı liste oluşturdu” gibi soruları
+ yanıtlayabilir, bir sorun bildirdiğinde ne olduğunu
+ inceleyebiliriz. Bu kayıt reklam, pazarlama ya da profilleme için
+ kullanılmaz.
+
+
+ Hukuki dayanak: siteyi yönetmek ve geliştirmek
+ için ziyaretçi sayısını ve performansı ölçmeye yönelik meşru
+ menfaatimiz (KVKK md. 5/2-f). Ölçüm yalnız bu sitede yapılır;
+ başka sitelerdeki gezinmenle birleştirilmez. Bu ölçüme itiraz
+ edebilirsin: aşağıdaki düğme ölçümü bu tarayıcıda tamamen kapatır.
+
+
+
+
+
+
Başka şirketlerin çerezleri
+
+
+ iyzico (ödeme). Yalnız ödeme sayfasında, kart
+ bilgilerini girdiğin form iyzico tarafından gösterilir. iyzico
+ bu formda ödemenin güvenliği ve dolandırıcılığın önlenmesi için
+ kendi çerezlerini kullanabilir. Paket satın almıyorsan bu
+ sayfayı hiç görmezsin.
+
+
+ Google ile giriş. Bu seçeneği kullanırsan
+ Google’ın giriş sayfasına yönlendirilirsin; orada
+ Google’ın kendi çerez politikası geçerlidir. Sitemizin
+ içine Google betiği yüklenmez.
+
+
+
+ Yazı tipleri, görseller ve ölçüm betiği kendi sunucularımızdan
+ gelir. Sitede sosyal medya eklentisi, gömülü video ya da reklam
+ yoktur.
+
+
+
+
+
Çerezleri nasıl yönetirsin?
+
+
Ölçümü yukarıdaki düğmeyle kapatabilirsin.
+
+ Tarayıcının ayarlarından çerezleri ve site verilerini
+ silebilir ya da tümüyle engelleyebilirsin. Silersen oturumun
+ kapanır; giriş yapmadan oluşturduğun liste ve sihirbaz
+ seçimlerin de silinir.
+
+
+ Çerezleri tümüyle engellersen giriş yapamazsın; katalog ve
+ rehber sayfalarını okumaya devam edebilirsin.
+
+
+
+
+
+
Hakların ve iletişim
+
+ KVKK’nın 11. maddesindeki haklarını (bilgi isteme,
+ düzeltme, silme, itiraz) kullanmak ya da bu sayfayla ilgili bir
+ şey sormak için{" "}
+
+ iletişim sayfasındaki
+ {" "}
+ e-posta adresine yaz; en geç 30 gün içinde yanıtlarız. Hakların
+ tam listesi{" "}
+
+ Gizlilik ve KVKK
+ {" "}
+ sayfasında.
+
+
+
+
+
Değişiklikler
+
+ Yeni bir çerez ya da ölçüm yöntemi eklersek bu sayfayı aynı gün
+ güncelleriz. Onayını gerektiren bir çerez eklemeye karar verirsek
+ önce sana sorarız; onay vermeden o çerez çalışmaz.
+
- Yalnızca oturumunu açık tutmak için zorunlu çerezler kullanılır;
- reklam veya izleme çerezi kullanılmaz. Siteyi geliştirebilmek için
- hangi sayfaların görüntülendiğini ve hangi adımların tamamlandığını
- ölçen, çerez kullanmayan bir analitik aracı (Rybbit) çalıştırıyoruz;
- bu araç kendi sunucumuzda barındırılır, veriler üçüncü taraf bir
- reklam ağına gitmez. Giriş yaptığında ziyaretin hesabınla
- eşleştirilir; bunun için e-posta adresin ve hesabındaki adın
- (varsa) kendi sunucumuzdaki bu analitik aracına kaydedilir ve
- yalnızca sorun giderme ile destek amacıyla kullanılır. Başarı
- sıralaman analitiğe ham hâliyle
- gönderilmez; yalnızca “50-100 bin” gibi geniş bir
- aralık olarak kaydedilir. Danışman profilindeki değerler
- analitiğe gitmez; yalnız hangi alanın kaydedildiği sayılır.
+ Yalnızca sitenin çalışması için zorunlu çerezler kullanılır
+ (oturumun, sıralaman ve listen); reklam veya izleme çerezi
+ kullanılmaz. Siteyi geliştirebilmek için hangi sayfaların
+ görüntülendiğini ve hangi adımların tamamlandığını ölçen, çerez
+ kullanmayan bir analitik aracı (Rybbit) çalıştırıyoruz; bu araç
+ Türkiye’deki kendi sunucumuzda barındırılır, veriler üçüncü
+ taraf bir reklam ağına ya da yurt dışına gitmez. IP adresin
+ saklanmaz. Giriş yaptığında ziyaretin hesabının rastgele kimlik
+ numarasıyla eşleştirilir; e-posta adresin ve adın analitiğe
+ gönderilmez. Başarı sıralaman analitiğe ham hâliyle gönderilmez;
+ yalnızca “50-100 bin” gibi geniş bir aralık olarak
+ kaydedilir. Danışman profilindeki değerler analitiğe gitmez;
+ yalnız hangi alanın kaydedildiği sayılır. Çerezlerin tam listesi,
+ ölçümün ayrıntıları ve ölçümü kapatma düğmesi{" "}
+
+ Çerez Politikası
+ {" "}
+ sayfasındadır.
diff --git a/src/app/layout.tsx b/src/app/layout.tsx
index 72762f4..c5e9f8f 100644
--- a/src/app/layout.tsx
+++ b/src/app/layout.tsx
@@ -11,6 +11,7 @@ import { TercihProfiliKapisiLazy } from "@/features/liste/components/tercih-prof
import { HeaderGate } from "@/components/header-gate";
import { DevPanelMount } from "@/components/dev/dev-panel-mount";
import { ConsoleAsr } from "@/components/console-asr";
+import { CerezBilgi } from "@/components/cerez-bilgi";
import { JsonLd, organizationJsonLd, webSiteJsonLd, SITE_URL } from "@/lib/seo";
import "./globals.css";
@@ -117,6 +118,8 @@ export default function RootLayout({
{/* İlk "+" için sıra + sihirbaz kapısı */}
+ {/* İlk ziyarette bir kez: çerez bilgilendirmesi (onay penceresi değil) */}
+
{/* DevTools'u açan meraklıya piksel kum saati + Asr Sûresi */}
diff --git a/src/app/sitemap.ts b/src/app/sitemap.ts
index f44539e..edb57ac 100644
--- a/src/app/sitemap.ts
+++ b/src/app/sitemap.ts
@@ -44,6 +44,11 @@ const staticEntries: MetadataRoute.Sitemap = [
{ url: `${SITE_URL}/meraklisina`, priority: 0.6, changeFrequency: "monthly" },
{ url: `${SITE_URL}/iletisim`, priority: 0.3, changeFrequency: "yearly" },
{ url: `${SITE_URL}/gizlilik`, priority: 0.2, changeFrequency: "yearly" },
+ {
+ url: `${SITE_URL}/cerez-politikasi`,
+ priority: 0.2,
+ changeFrequency: "yearly",
+ },
{ url: `${SITE_URL}/kosullar`, priority: 0.2, changeFrequency: "yearly" },
];
diff --git a/src/components/cerez-bilgi.tsx b/src/components/cerez-bilgi.tsx
new file mode 100644
index 0000000..411b4d6
--- /dev/null
+++ b/src/components/cerez-bilgi.tsx
@@ -0,0 +1,80 @@
+"use client";
+
+// İlk ziyarette bir kez görünen çerez bilgilendirmesi. Onay penceresi DEĞİL:
+// sitede açık rıza gerektiren çerez yok (zorunlu çerezler + kendi
+// sunucumuzdaki ölçüm; bkz. /cerez-politikasi). KVKK Çerez Rehberi (Temmuz
+// 2025) §9, veri işleme şartından bağımsız olarak siteye girişte
+// bilgilendirme bekliyor; bu bant onu karşılar. Kabul/ret düğmesi yoktur,
+// çünkü sorulan bir rıza yoktur — ölçümü kapatma anahtarı politika
+// sayfasındadır. Kapatma kalıcıdır (localStorage).
+
+import { useEffect, useState } from "react";
+import Link from "next/link";
+import { usePathname } from "next/navigation";
+import { Button } from "@/components/ui/button";
+import { ViewportPortal } from "@/components/viewport-portal";
+import { kromGizliMi } from "@/components/header-gate";
+
+const GORULDU_KEY = "kolaytercih.cerez-bilgi";
+
+export function CerezBilgi() {
+ const pathname = usePathname();
+
+ // SSR/ilk boyada gizli başla; durum mount'ta okunur.
+ const [goruldu, setGoruldu] = useState(true);
+ useEffect(() => {
+ try {
+ // eslint-disable-next-line react-hooks/set-state-in-effect
+ setGoruldu(Boolean(localStorage.getItem(GORULDU_KEY)));
+ } catch {
+ // Depolama kapalıysa "görüldü" saklanamaz; her sayfada çıkmasın.
+ setGoruldu(true);
+ }
+ }, []);
+
+ if (goruldu) return null;
+ // Giriş/ödeme gibi kromsuz akışlarda ve politikanın kendisinde gösterilmez.
+ if (pathname && kromGizliMi(pathname)) return null;
+ if (pathname === "/cerez-politikasi") return null;
+
+ function kapat() {
+ setGoruldu(true);
+ try {
+ localStorage.setItem(GORULDU_KEY, "1");
+ } catch {}
+ }
+
+ return (
+
+ {/* z-45: KaydetBanner'ın (z-40) üstünde, modalların (z-50) altında */}
+
+
+
+ Bu sitede reklam ya da izleme çerezi yok. Yalnız oturumun ve listen
+ için gerekli çerezleri ve kendi sunucumuzda çalışan çerezsiz
+ ziyaret ölçümünü kullanıyoruz.{" "}
+
+ Ayrıntılar ve ölçümü kapatma
+
+
+
+
+
+
+ );
+}
diff --git a/src/components/olcum-tercihi.tsx b/src/components/olcum-tercihi.tsx
new file mode 100644
index 0000000..7eba54c
--- /dev/null
+++ b/src/components/olcum-tercihi.tsx
@@ -0,0 +1,72 @@
+"use client";
+
+// Kullanım ölçümünü (Rybbit) bu tarayıcıda kapatan/açan anahtar — KVKK
+// md. 11 itiraz hakkının arayüzü, /cerez-politikasi sayfasında durur.
+//
+// Rybbit betiği yüklenirken localStorage'da `disable-rybbit` anahtarını
+// görürse hiçbir şey göndermez (betiğin kendi vazgeçme kapısı). Betik
+// yüklendikten sonra durdurulamadığı için tercih değişince sayfa yenilenir.
+
+import { useEffect, useState } from "react";
+import { Button } from "@/components/ui/button";
+
+const KAPALI_KEY = "disable-rybbit";
+// Rybbit'in bu tarayıcıya yazdığı kimlikler; ölçüm kapanınca silinir.
+const RYBBIT_KIMLIK_KEYLERI = ["rybbit-user-id", "rybbit-visitor-id"];
+
+export function OlcumTercihi() {
+ // null = henüz okunmadı (SSR/ilk boya)
+ const [kapali, setKapali] = useState(null);
+ const [hata, setHata] = useState(false);
+
+ useEffect(() => {
+ try {
+ // eslint-disable-next-line react-hooks/set-state-in-effect
+ setKapali(localStorage.getItem(KAPALI_KEY) !== null);
+ } catch {
+ setKapali(false);
+ }
+ }, []);
+
+ function degistir() {
+ try {
+ if (kapali) {
+ localStorage.removeItem(KAPALI_KEY);
+ } else {
+ localStorage.setItem(KAPALI_KEY, "1");
+ for (const k of RYBBIT_KIMLIK_KEYLERI) localStorage.removeItem(k);
+ }
+ } catch {
+ setHata(true);
+ return;
+ }
+ window.location.reload();
+ }
+
+ return (
+
+
+
+ {kapali ? "Ölçüm bu tarayıcıda kapalı" : "Ölçüm bu tarayıcıda açık"}
+
+
+ {hata
+ ? "Tarayıcın bu tercihi saklamaya izin vermiyor."
+ : kapali
+ ? "Ziyaretlerin sayılmıyor. Site aynı şekilde çalışır."
+ : "Kapatırsan ziyaretlerin sayılmaz; site aynı şekilde çalışır."}
+