Ege Can Komur 4d5186ff0c feat: kovakyazilim.com WordPress sitesinden tasarım + içerik aktarımı
Hostinger SSH + WP-CLI ile mevcut canlı sitedeki tasarım ve içerikler aktarıldı.

Tasarım değişiklikleri:
- Renkler: navy #0F2C5C → #043e8c (deep navy), sky #4DA3C7 → #3b82f6 (bright blue)
- Tailwind blue palette uyumlu, WP kovak temasıyla bire bir
- Font: Geist → Poppins (300/400/500/600/700/800)
- Hero: gradient açık → dark gradient (#0f172a → #1e293b → #334155)
  - Pulse animasyonlu radial glow
  - 'Web Tasarım', 'Yazılım', 'Ajansı' kelimelerini blue-400 vurgu
  - Stats strip artık hero'nun alt kenarında (4 metrik)

İçerik aktarımı (Appwrite):

site_settings/homepage güncellendi:
- Hero: 'Kocaeli Web Tasarım ve Yazılım Ajansı' + 2015'ten beri tagline
- Stats: 150+ proje / 50+ müşteri / 100% memnuniyet / 24/7 destek
- Services intro: 'İzmit ve Kocaeli Web Tasarım Hizmetlerimiz'
- Projects intro: 'İzmit Web Tasarım Referanslarımız'
- CTA: 'Projeniz İçin Hemen Teklif Alın'

6 referans projesi seed edildi (WP'deki real client listesi):
- Torpido Makina (torpidomakina.com.tr) — Volvo Penta yetkili bayi
- Marjinal Dent (marjinaldent.com) — Diş kliniği
- Abdullah Tosun Mimarlık (abdullahtosun.art) — Mimar portfoyu
- Calibra PPF (calibrappf.com) — Araç kaplama
- Atolye Bastar — Zanaat atölyesi (yakında)
- MarineCRM — Denizcilik CRM (özel yazılım)

6 hizmet description'u WP içerikleriyle güncellendi:
- web-tasarim → 'Profesyonel Web Tasarım İzmit'
- e-ticaret → 'E-Ticaret Sitesi Yapımı'
- mobil-uygulama → 'Mobil Uygulama Geliştirme'
- yazilim-gelistirme → 'Özel Yazılım Geliştirme İzmit'
- seo-dijital-pazarlama → 'SEO Hizmeti Kocaeli'
- dijital-reklam → 'Dijital Pazarlama Kocaeli'

7 sektör/bölge landing sayfası industries tablosuna seed edildi:
- /sektor/kocaeli-web-tasarim
- /sektor/izmit-web-tasarim
- /sektor/gebze-web-tasarim
- /sektor/kocaeli-seo
- /sektor/izmit-seo
- /sektor/kocaeli-yazilim
- /sektor/izmit-web-tasarim-fiyat (paket fiyat tablosu ile)

Her sektör için:
- WP'deki rank_math_description meta'ları SEO desc olarak
- Markdown content + features list + FAQ
- featured + order ayarlı

37 route, build temiz.

Sıradaki adım: WP uploads klasöründen müşteri görsellerini indirip
project image_url'lerini local'e taşıyabilir (şu an Pexels CDN kullanılıyor).
2026-05-20 18:26:05 +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%