Ege Can Komur cf46e30a7e feat: TR rakip analizi → satış blokerleri düzeltildi
Rakip analizi (kocaelidijital.com, promedyanet.com, lf.com.tr) sonrası
satış blokerleri tespit edildi ve aşağıdaki bölümler eklendi:

1. ANASAYFADA SSS (8 hazır soru, admin'den düzenlenebilir)
   - Fiyat, süre, ödeme, garanti, hosting, SEO, mevcut site yenileme,
     sadece tasarım hizmeti gibi en sık sorulan sorular
   - HomepageFaq component (sticky sol + accordion sağ)
   - site_settings.homepage_faq[] (JSON {q,a})

2. RISK REVERSAL bölümü (Guarantee component)
   - 'İlk taslak ücretsiz, memnun değilseniz devam etmiyoruz'
   - 4 garanti maddesi checklist
   - site_settings.guarantee_title/description/items

3. PROJE METRİKLERİ (vaka çalışması güçlendirme)
   - projects.metrics[] (JSON {value,label})
   - Detay sayfada büyük metric kartları
   - Admin formda 'değer | etiket' satır formatı

4. HERO COPY GÜNCELLEMESİ (admin'den düzenlenebilir)
   - 'Kocaeli'de 2-3 hafta içinde yayında olan, satan kurumsal web siteleri'
   - 'İlk tasarım taslakı ücretsiz' vurgusu
   - Trust band: 30 dk yanıt + ücretsiz taslak + 4.9 memnuniyet

5. /SITE-ANALIZI LEAD MAGNET SAYFASI
   - URL + ad + email + telefon formu
   - 6 analiz başlığı (CWV, mobil, SEO, güvenlik, içerik, rakip)
   - contact_messages'a source=quick-site-audit ile yazılır
   - 'subject' alanı ile inbox'ta ayırt edilebilir

6. EKİP BÖLÜMÜ (Hakkımızda sayfasında)
   - Yeni team_members tablosu (name, role, bio, photo, linkedin)
   - /admin/ekip CRUD sayfası
   - TeamGrid component

7. SEKTÖR LANDING SAYFALARI (/sektor/[slug])
   - Yeni industries tablosu (slug, title, content, features, faq, SEO)
   - /admin/sektorler CRUD sayfası
   - SEO + ad-targeted landing template
   - Hero + trust + features + content + garanti + projeler + hizmetler + FAQ + JSON-LD

Admin /admin/site formuna yeni bölümler:
- 'Risk reversal / Garanti' (title + description + items)
- 'Anasayfa SSS' (---' bloklarla)

App sidebar'a 'Sektörler' ve 'Ekip' linkleri eklendi.
Footer'a 'Ücretsiz Site Analizi' linki eklendi.

36 route üretiliyor (önceki 31'den +5: /site-analizi, /sektor/[slug],
/admin/ekip + alt, /admin/sektorler + alt).
2026-05-20 04:03:21 +03:00
2026-05-20 01:42:45 +03:00
2026-05-20 01:42:45 +03:00
2026-05-20 01:42:45 +03:00

Kovak Yazılım — Kurumsal Site + Admin Panel

Next.js 16 + TypeScript + Tailwind v4 + Appwrite ile geliştirilmiş kurumsal site ve içerik yönetim paneli.

Teknoloji

  • Framework: Next.js 16 (App Router, Turbopack, React 19)
  • Stil: Tailwind CSS v4
  • Backend: Appwrite (TablesDB + Storage + Auth) — https://db.kovaksoft.com
  • İçerik: Markdown (marked.js)
  • İkonlar: lucide-react + inline SVG
  • Form: React Server Actions + useActionState

Kurulum

npm install
cp .env.example .env.local
# .env.local içine APPWRITE_API_KEY'i Appwrite Console'dan oluşturup ekle
npm run dev

Site: http://localhost:3000 Admin: http://localhost:3000/admin/login

İlk Admin Kullanıcısı

  1. Appwrite Console → Auth → Users → Create User
  2. Email + şifre belirle
  3. /admin/login üzerinden giriş yap

Appwrite Yapılandırması

Project ID: 69f27b51000a5bee46ce Database ID: kovak-yazilim-db Bucket ID: kovak-yazilim-media

Tablolar

Tablo İçerik
services Hizmet kartları (slug, title, description, icon, order, featured)
projects Referans projeler (slug, title, description, image_url, live_url, category, technologies[], year, featured)
blog_posts Blog yazıları (slug, title, excerpt, content, cover_image, author, status, published_at, tags[], seo_*)
testimonials Müşteri yorumları (name, role, company, message, rating, image_url, order, featured)
seo_pages Sayfa bazlı SEO override (path, title, description, og_image, canonical, noindex)
seo_settings Global SEO ayarları (singleton — rowId: global)
contact_messages İletişim formu kayıtları (anonim create, users read/update/delete)

Storage

kovak-yazilim-media — 10 MB max, image-only (jpg/png/webp/gif/svg/avif). Public read.

API Key

Appwrite Console → Settings → API Keys → Create Scopes: databases.read, tables.read, rows.read, rows.write, files.read, files.write, users.read

Admin Paneli

/admin altında:

  • Pano (/admin) — Sayım kartları + hızlı aksiyonlar
  • Blog (/admin/blog) — Yazı CRUD, draft/published durumu, markdown editor
  • Hizmetler (/admin/hizmetler) — Hizmet CRUD, lucide ikon seçici
  • Projeler (/admin/projeler) — Portfolyo CRUD
  • Referanslar (/admin/referanslar) — Müşteri yorumları
  • SEO (/admin/seo) — Global meta + sayfa bazlı override
  • Mesajlar (/admin/iletisim) — Form inbox, status (new/read/replied/archived)
  • Medya (/admin/medya) — Appwrite Storage browser, upload/delete

Auth Akışı

lib/auth.tsgetCurrentUser() & requireUser() Login → account.createEmailPasswordSession → session secret HTTP-only cookie (kovak_session) Admin layout (app/admin/(protected)/layout.tsx) requireUser() çağrısı yapar — yetkisiz giriş /admin/login'e redirect.

SEO Sistemi

lib/seo.tsbuildMetadata(path, fallback)

Sıralama (override öncelikli):

  1. seo_pages tablosunda o path için kayıt varsa → onun title/description/og_image kullanılır
  2. Yoksa sayfanın kendi fallback Metadata objesi
  3. O da yoksa seo_settings (global)
  4. O da yoksa lib/site-config.ts

Yapı

app/
  (site)/                  # Public site (Header + Footer ortak)
    page.tsx              # Anasayfa
    hizmetler/            # /hizmetler
    projeler/             # /projeler
    blog/                 # /blog, /blog/[slug]
    hakkimizda/
    iletisim/
  admin/
    login/                # /admin/login (auth dışı)
    (protected)/          # requireUser() ile korunan grup
      page.tsx            # /admin
      blog/
      hizmetler/
      projeler/
      referanslar/
      seo/
      iletisim/
      medya/
  actions.ts              # Public Server Action: submitContact
  layout.tsx              # Root layout (html/body)
components/
  admin/                  # Sidebar, topbar, form helpers, delete button
  header.tsx, footer.tsx
  hero.tsx, services-grid.tsx, projects-grid.tsx, testimonials.tsx
  contact-form.tsx
lib/
  appwrite.ts             # Browser client
  appwrite-server.ts      # adminClient (API key) + sessionClient (cookie)
  auth.ts                 # Session helpers
  admin-actions.ts        # Tüm CRUD server actions (gate() ile auth check)
  data.ts                 # listX / getX sorguları
  seo.ts                  # buildMetadata
  site-config.ts          # Marka + fallback değerler
  types.ts                # Row tipleri
public/logo.png           # Logo

Build

npm run build   # 23 route, public sayfalar static, admin dynamic
npm start

Gitea Remote

git remote add origin ssh://git@git.kovaksoft.com:2222/kovakmedya/kovakyazilim.git
git push -u origin main
S
Description
No description provided
Readme 580 KiB
Languages
TypeScript 99.3%
CSS 0.5%
JavaScript 0.2%