# KVKK uyumu

> Bir web sitesinde 6698 sayılı Kanun'a uyum için trkit ile yapılacaklar.

> Bu sayfa teknik bir rehberdir, hukuki görüş değildir. Kesin değerlendirme için bir avukata danışın.

## Temel kavramlar

**Aydınlatma yükümlülüğü (md. 10):** Kişisel veri topladığınız herkese; kim olduğunuzu, veriyi hangi amaçla ve hukuki sebeple işlediğinizi, kimlere aktardığınızı ve haklarını bildirmeniz gerekir. Bu bir **bilgilendirmedir, onay değildir**. Aydınlatma metni için "okudum, onaylıyorum" kutusu koymak yaygın bir hatadır.

**Açık rıza (md. 5/1):** Yalnızca Kanun'daki diğer hukuki sebeplerden (sözleşme, yasal yükümlülük, meşru menfaat…) hiçbiri yoksa alınır. Örneğin sipariş teslimatı için adres işlemek sözleşmenin ifasıdır, açık rıza gerekmez. Pazarlama amaçlı profil çıkarma için açık rıza gerekir. Açık rıza:

- Belirli bir konuya ilişkin, bilgilendirmeye dayalı ve özgür iradeyle verilmelidir
- Aydınlatma metninden ayrı sunulmalıdır
- Hizmet şartına bağlanamaz ("onay vermezseniz üye olamazsınız" olmaz)
- Önceden işaretli kutuyla alınamaz
- Her zaman geri alınabilmelidir

**Yurt dışı aktarım (md. 9):** 1 Haziran 2024'ten itibaren yurt dışı aktarım; yeterlilik kararı, standart sözleşme, bağlayıcı şirket kuralları gibi uygun güvencelerle yapılır. Açık rıza yalnızca arızi (düzenli olmayan) aktarımlarda kullanılabilir. **Vercel, AWS, Google Analytics, Meta Pixel, Cloudflare gibi servisler yurt dışı aktarımdır.** Standart sözleşme imzalandıktan sonra 5 iş günü içinde Kurum'a bildirilmelidir.

## trkit ile adımlar

### 1. Şirket bilgileri ve veri envanteri

```ts title="src/trkit.config.ts"
import { defineConfig } from "@trkit-app-pack/legal";

export default defineConfig({
  company: {
    unvan: "Örnek Gıda Ltd. Şti.",
    marka: "Örnek",
    mersis: "0123456789000015",
    adres: "Atatürk Cad. No:1 Kadıköy/İstanbul",
    telefon: "0216 000 00 00",
    eposta: "info@ornek.com.tr",
    kvkkEposta: "kvkk@ornek.com.tr",
    website: "https://ornek.com.tr",
  },
  kvkk: {
    veriKategorileri: ["kimlik", "iletisim", "musteri-islem", "finans", "islem-guvenligi", "pazarlama", "hukuki-islem"],
    yurtDisiAktarim: { hizmetler: ["Vercel", "Google Analytics"], dayanak: "standart-sozlesme" },
    verbisNo: "", // VERBİS kayıt yükümlülüğünüz varsa
  },
  pay: { provider: "iyzico" },  // aktarım listesine otomatik eklenir
  sms: { provider: "netgsm" },
});
```

Veri kategorileri ve her birinin amaç ve hukuki sebepleri [@trkit-app-pack/legal](/docs/paketler/legal#veri-kategorileri) sayfasında listelenmiştir.

### 2. Sayfalar

```bash
npx trkit add kvkk acik-riza kvkk-basvuru cerez-politikasi
npx trkit check
```

### 3. Formlarda bilgilendirme

Kişisel veri toplanan her formun yanında aydınlatma metnine bağlantı verin; kutu koymayın:

```tsx
<p className="text-xs text-muted-foreground">
  Kişisel verileriniz <Link href="/kvkk">Aydınlatma Metni</Link> kapsamında işlenmektedir.
</p>
```

### 4. Açık rıza gerekiyorsa ayrı kutu

```tsx
<label>
  <input type="checkbox" name="pazarlamaRiza" /> {/* defaultChecked YOK */}
  Alışveriş tercihlerime göre kişiselleştirilmiş kampanyalar sunulması için verilerimin işlenmesine{" "}
  <Link href="/acik-riza">Açık Rıza Metni</Link> kapsamında onay veriyorum. (İsteğe bağlı)
</label>
```

### 5. Onayları kaydedin

Açık rızanın varlığını ispat yükü sizdedir. Kayıtları ekleme-tabanlı (silinmeyen, güncellenmeyen) bir tabloda tutun:

```ts
import { createConsentRecord, generate, documentHash } from "@trkit-app-pack/legal";
import config from "@/trkit.config";

const { document } = generate("acik-riza", config);
const record = await createConsentRecord({
  subjectId: user.id,
  purpose: "kvkk:acik-riza",
  granted: true,
  document: `acik-riza@${document.templateVersion}`,
  documentHash: await documentHash(document), // kullanıcının gördüğü metnin özeti
  source: "kayit-formu",
  ip, salt: process.env.CONSENT_SALT!,        // ham IP saklanmaz
});
await db.insert(consents).values(record);
```

### 6. Çerezler

Ayrıntılar: [Çerez onayı](/docs/rehber/cerez).

## Sık yapılan hatalar

- Aydınlatma metnini onay kutusuna bağlamak
- Sözleşme gereği işlenen veri için açık rıza istemek (rıza geri alınınca hizmeti veremezsiniz)
- Yurt dışı servisleri aydınlatma metninde belirtmemek
- Tüm onayları tek bir kutuda toplamak ("KVKK, ticari ileti ve sözleşmeyi onaylıyorum")
- Onay kayıtlarını tutmamak veya üzerine yazmak
