# Firebase kurulumu (çoklu kullanıcı senkronu)

Bu uygulama statik bir sitedir. Aynı anda farklı bilgisayarlardan kişilerin
iletişim / LCV bilgilerini düzenlemek için **ücretsiz Firebase Firestore**
kullanılır. Her kişi kendi belgesine yazıldığı için kullanıcılar birbirinin
kayıtlarını ezmez.

> **Önemli:** Giriş şifresi yalnızca tarayıcıda bir hash ile kontrol edilir;
> sunucu tarafı kimlik doğrulama değildir. Firestore kurallarını ofis
> kullanımına göre sıkılaştırın veya IP / App Check ekleyin.

## 1. Firebase projesi

1. [Firebase Console](https://console.firebase.google.com/) açın.
2. **Add project** ile yeni proje oluşturun (Blaze gerekmez; Spark / ücretsiz yeter).
3. Google Analytics isteğe bağlıdır; kapatabilirsiniz.

## 2. Web uygulaması

1. Project Overview → **Add app** → **Web** (`</>`).
2. Uygulamaya bir takma ad verin (ör. `protokol-pages`).
3. Çıkan `firebaseConfig` nesnesini kopyalayın.

## 3. config.js

Proje kökünde:

```bash
cp config.example.js config.js
```

`config.js` içindeki `YOUR_*` alanlarını konsoldaki değerlerle doldurun.
`config.js` yüklendiğinde ve geçerliyse uygulama Firestore moduna geçer;
aksi halde sarı bant görünür ve düzenlemeler `localStorage` anahtarı
`protokol_edits_v1` altında kalır.

## 4. Firestore veritabanı

1. Build → **Firestore Database** → **Create database**.
2. Başlangıç modu: önce **production** veya **test**; ardından kuralları
   aşağıdaki gibi ayarlayın.
3. Konum: size yakın bir bölge (ör. `europe-west1`).

Koleksiyon adı uygulama tarafından kullanılır: **`person_edits`**
Belge kimliği: kişinin `Ad_Soyad` alanından üretilen ASCII slug
(ör. `Ahmet Eşref Fakıbaba` → `ahmet_esref_fakibaba`).

Alanlar:

| Alan | Tip | Açıklama |
|------|-----|----------|
| email | string | Düzenlenen e-posta (boşsa `data.json` değeri kullanılır) |
| phone | string | Düzenlenen telefon |
| notes | string | İç not |
| contactStatus | string | `none` \| `will_contact` \| `contacted` |
| lcvStatus | string | `pending` \| `coming` \| `not_coming` \| `maybe` |
| updatedAt | timestamp | `serverTimestamp()` |
| updatedBy | string | Kullanıcı adı (üst çubuk) |

## 5. Güvenlik kuralları (ofis kullanımı)

Firestore → Rules. Aşağıdaki kurallar `person_edits` için okuma/yazmaya izin verir.
**Şifre sunucu kimliği değildir**; bu kurallar herkese açık yazma demektir.
Yalnızca davetli ofis / iç ağ + gizli Pages URL’si senaryosu içindir.

```
rules_version = '2';
service cloud.firestore {
  match /databases/{database}/documents {
    match /person_edits/{personId} {
      allow read, write: if true;
    }
    match /{document=**} {
      allow read, write: if false;
    }
  }
}
```

Daha sıkı seçenekler (önerilir, zamanınız varsa):

- Firebase Authentication (ortak ofis hesabı) + `request.auth != null`
- App Check
- Belirli saatlerde kuralları kilitlemek

## 6. Yayınlama

GitHub Pages (veya benzeri) ile `index.html` kökünü yayınlayın.
`config.js` dosyasının da yayınlandığından emin olun.
Kurulumdan sonra iki tarayıcıda test için `VERIFY.md` dosyasına bakın.

## 7. Sorun giderme

- Sarı bant duruyorsa: `config.js` yok, 404 veya hâlâ `YOUR_` placeholder içeriyor.
- Konsolda permission-denied: Rules yayınlanmamış veya koleksiyon adı yanlış.
- Tek PC’de çalışıp diğerinde görünmüyorsa: diğer tarayıcıda hâlâ yerel mod
  (bant) veya farklı Firebase projesi.
