From f3604d96b8b2daed51462a6801f987190fc18cbf Mon Sep 17 00:00:00 2001 From: Ege Can Komur Date: Wed, 20 May 2026 19:53:38 +0300 Subject: [PATCH] docs: production env example + Coolify deploy rehberi MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit .gitignore'da '.env*' pattern'i .env.example'ı da engelliyordu. '!.env.example' ile istisna eklendi — .env.local hala gizli kalıyor. .env.example temizlendi — sadece gerçek kullanılan 4 değişken: - NEXT_PUBLIC_APPWRITE_ENDPOINT - NEXT_PUBLIC_APPWRITE_PROJECT_ID - NEXT_PUBLIC_APPWRITE_DATABASE_ID - NEXT_PUBLIC_APPWRITE_MEDIA_BUCKET_ID APPWRITE_API_KEY opsiyonel (session-cookie tabanlı auth aktif). DEPLOY.md eklendi: - Coolify app oluşturma adımları - Environment variables tam liste - Build sonrası kontroller - Gitea webhook bilgisi - Domain yönlendirme (3 seçenek) - Production checklist --- .env.example | 31 ++++++++++++++++++++++ .gitignore | 3 ++- DEPLOY.md | 74 ++++++++++++++++++++++++++++++++++++++++++++++++++++ 3 files changed, 107 insertions(+), 1 deletion(-) create mode 100644 .env.example create mode 100644 DEPLOY.md diff --git a/.env.example b/.env.example new file mode 100644 index 0000000..3be2441 --- /dev/null +++ b/.env.example @@ -0,0 +1,31 @@ +# ────────────────────────────────────────────────────────────── +# Kovak Yazılım — Production Environment Variables +# ────────────────────────────────────────────────────────────── +# Bu dosya GIT'e EKLENİR (örnek değerler, sırlı şey YOK). +# .env.local lokal geliştirme için, .env.production sadece referans. +# Coolify'da bu key'leri "Environment Variables" panelinden gir. +# ────────────────────────────────────────────────────────────── + + +# ─── Appwrite (zorunlu) ─────────────────────────────────────── +# Appwrite Console > Settings'tan al +NEXT_PUBLIC_APPWRITE_ENDPOINT=https://db.kovaksoft.com/v1 +NEXT_PUBLIC_APPWRITE_PROJECT_ID=69f27b51000a5bee46ce +NEXT_PUBLIC_APPWRITE_DATABASE_ID=kovak-yazilim-db +NEXT_PUBLIC_APPWRITE_MEDIA_BUCKET_ID=kovak-yazilim-media + + +# ─── Appwrite API Key (opsiyonel) ───────────────────────────── +# Şu anki mimaride session cookie tabanlı auth kullanılıyor, API +# key'e gerek YOK. Sadece ileride sunucu tarafı admin işlemleri için +# (cron, scheduled jobs vs) eklemek istersen kullanılır. +# +# Console > Settings > API Keys > Create: +# Scopes: databases.read, tables.read, rows.read, rows.write, +# files.read, files.write, users.read +APPWRITE_API_KEY= + + +# ─── Node ortamı ────────────────────────────────────────────── +# Coolify otomatik 'production' verir, lokalde 'development' +# NODE_ENV=production diff --git a/.gitignore b/.gitignore index 5ef6a52..27bb1dd 100644 --- a/.gitignore +++ b/.gitignore @@ -30,8 +30,9 @@ yarn-debug.log* yarn-error.log* .pnpm-debug.log* -# env files (can opt-in for committing if needed) +# env files — only ignore real secrets, keep .env.example for reference .env* +!.env.example # vercel .vercel diff --git a/DEPLOY.md b/DEPLOY.md new file mode 100644 index 0000000..0981ea7 --- /dev/null +++ b/DEPLOY.md @@ -0,0 +1,74 @@ +# Deployment Rehberi — Coolify + +## Önkoşullar + +1. Coolify'da yeni bir **Application** oluştur: + - Source: Git → `ssh://git.kovaksoft.com:2222/kovakmedya/kovakyazilim.git` + - Branch: `main` + - Build Pack: **Nixpacks** (otomatik Next.js algılar) veya **Dockerfile** yoksa Nixpacks + - Domain: örn. `kovakyazilim.com` veya `yeni.kovakyazilim.com` + - Port: `3000` + +2. Build & Start command'ları: + - Install: `npm ci` + - Build: `npm run build` + - Start: `npm start` + +## Environment Variables (Coolify > Environment) + +```env +NEXT_PUBLIC_APPWRITE_ENDPOINT=https://db.kovaksoft.com/v1 +NEXT_PUBLIC_APPWRITE_PROJECT_ID=69f27b51000a5bee46ce +NEXT_PUBLIC_APPWRITE_DATABASE_ID=kovak-yazilim-db +NEXT_PUBLIC_APPWRITE_MEDIA_BUCKET_ID=kovak-yazilim-media +``` + +> `APPWRITE_API_KEY` şu anda **kullanılmıyor** — mimari session cookie tabanlı. İleride cron/scheduled job eklersen Appwrite Console'dan key oluştur. + +## Build sonrası kontroller + +1. Site yükleniyor mu? → `https://[domain]/` +2. Admin login çalışıyor mu? → `https://[domain]/admin/login` + - İlk admin kullanıcısını **Appwrite Console > Auth > Users** üzerinden oluştur +3. Cookie banner çıkıyor mu? → Anasayfa açıldığında 800ms sonra +4. WhatsApp float + sticky mobil bar görünüyor mu? + +## Gitea Webhook + +Coolify, Gitea'dan push webhook'unu otomatik yapılandırır: +- URL (Gitea > Settings > Webhooks): `https://admin.kovaksoft.com/webhooks/source/gitea/events/manual` +- Event: `push` +- Branch filter: `main` + +Her `git push origin main` Coolify'da otomatik build + deploy tetikler. + +## Domain yönlendirmesi + +Mevcut WP sitesi `kovakyazilim.com`'da. Geçiş seçenekleri: + +| Yaklaşım | Açıklama | +|---|---| +| **A. Tek seferlik geçiş** | DNS kaydını Coolify'a yönlendir. WP yedeğini al, sonra kapat. | +| **B. Test subdomain'i** | `yeni.kovakyazilim.com` ile Next.js'i yayınla, test et, ardından ana domain'i değiştir. | +| **C. Hibrit** | Eski WP `eski.kovakyazilim.com`'a taşı, ana domain'de Next.js. | + +**Önerilen: B** — test ortamında doğrula, sonra geçiş. + +## Production'a alma checklist + +- [ ] Coolify'da app oluşturuldu, ENV'ler girildi +- [ ] İlk build başarılı (`npm run build` 39 route üretmeli) +- [ ] Appwrite Console'da admin user oluşturuldu +- [ ] `/admin/login` çalışıyor +- [ ] Anasayfa, hizmetler, projeler, iletişim formu sınanmış +- [ ] WhatsApp + telefon CTA çalışıyor +- [ ] Cookie banner görünüyor +- [ ] SSL aktif (Coolify Let's Encrypt otomatik) +- [ ] WP yedeği alındı (ihtiyaç olursa) +- [ ] DNS yönlendirildi + +## Sonradan eklenecekler + +- **GTM ID**: `/admin/seo` üzerinden `gtm_id` alanına gir → Consent Mode v2 ile uyumlu otomatik yüklenir +- **Müşteri logoları**: `/admin/site` → "Müşteri logoları" alanına URL ekle +- **Blog yazıları, projeler, ekip fotoları**: `/admin/*` üzerinden