# LikaWEB CMS Nihai Mimari Karar, Ürün Vizyonu ve Teknik Yol Haritası

Sürüm: 1.0  
Durum: Onaylandı  
Karar tarihi: 2026-06-10

## 1. Projenin Amacı

LikaWEB'in amacı Laravel tabanlı, modern, hızlı, güvenli ve profesyonel bir içerik yönetim sistemi çekirdeği oluşturmaktır.

Sistem aşağıdaki türde siteleri üretmek ve yönetmek için kullanılacaktır:

- Kurumsal web siteleri
- Yazılım ürün siteleri
- SaaS ürün tanıtım siteleri
- Landing page siteleri
- Blog ve haber siteleri
- Firma tanıtım siteleri
- Kurumsal katalog siteleri

LikaWEB'in amacı WordPress'e birebir alternatif olmak değildir. Hedef; WordPress'in kullanım kolaylığına, Laravel'in kod kalitesine ve özel geliştirmelerin esnekliğine sahip profesyonel bir CMS çekirdeği oluşturmaktır.

## 2. Nihai Mimari Karar

LikaWEB multi-tenant olmayacaktır.  
LikaWEB multi-site olmayacaktır.  
Her domain bağımsız çalışacaktır.

Tercih edilen model:

```text
Tek çekirdek kod + bağımsız kurulum
```

Yani her site kendi kurulumuna sahip olacaktır:

- Kendi veritabanı
- Kendi storage alanı
- Kendi domain ve SSL ayarı
- Kendi admin paneli
- Kendi `.env` yapılandırması
- Aynı LikaWEB çekirdek kodu

Örnek:

```text
likayazilim.com      -> bağımsız Laravel kurulumu
marketkurdu.com      -> bağımsız Laravel kurulumu
firsatharitasi.com   -> bağımsız Laravel kurulumu
likaone.com          -> bağımsız Laravel kurulumu
```

## 3. Bilinçli Olarak Kullanılmayacak Yapılar

Bu projede aşağıdaki yapılar kullanılmayacaktır:

- Multi tenant
- Multi site
- `site_id` mimarisi
- `site_domainleri` tablosu
- Domain resolver middleware
- Tenant scope
- Global site query scope
- Merkezi site yönetimi
- Tek panelden çoklu site yönetimi

Bu karar önceki çoklu site yaklaşımını geçersiz kılar. LikaWEB bir SaaS paneli değil, bağımsız kurulabilir CMS çekirdeği olarak geliştirilecektir.

## 4. Bu Kararın Sebepleri

### Güvenlik

Her sitenin veritabanı ve storage alanı ayrı olur. Bir kurulumdaki güvenlik problemi diğer sitelerin verisine doğrudan temas etmez. KVKK açısından izolasyon daha güçlüdür.

### Performans

Yoğun trafik alan bir site diğer siteleri yavaşlatmaz. Her site gerektiğinde farklı sunucuya, farklı veritabanına veya farklı altyapıya taşınabilir.

### Özelleştirme

Her müşterinin veya projenin özel tasarım, özel modül veya özel entegrasyon ihtiyacı olabilir. Bağımsız kurulum modeli bu esnekliği çekirdeği kirletmeden sağlar.

### Bakım Kolaylığı

Bir sitedeki hata diğer siteleri bozmaz. Sorunlar izole şekilde çözülür. Güncelleme kontrollü yapılabilir.

### Ölçeklenebilirlik

Proje büyüdükçe ilgili kurulum ayrı sunucu, ayrı veritabanı, ayrı ekip veya ayrı yayın döngüsüyle yönetilebilir.

## 5. Çekirdek Sistem Yapısı

LikaWEB üç ana katmandan oluşacaktır:

### CMS Çekirdeği

Standart özellikler:

- Kullanıcı yönetimi
- Yetki yönetimi
- Ayarlar
- Medya yönetimi
- Tema yönetimi
- Sayfa yönetimi
- Menü yönetimi
- Blok yönetimi
- Form yönetimi
- SEO yönetimi
- Audit log

### Modül Katmanı

Opsiyonel modüller:

- Blog
- Haberler
- Galeri
- Referanslar
- Ürünler
- Hizmetler
- Kariyer
- Duyurular

Modüller kurulum bazında açılıp kapatılabilir olmalıdır.

### Tema Katmanı

Tema sistemi çekirdekten bağımsız olmalıdır. Tema, veriyi yönetmez; veriyi gösterir. İçerik yapısı tema değişince kaybolmamalıdır.

## 6. Tema Sistemi

Tema klasör yapısı:

```text
resources/views/themes/
    varsayilan/
    corporate/
    saas/
    landing/
    marketplace/
```

Her tema kendi görünüm dosyalarına sahip olabilir:

- Header
- Footer
- Ana sayfa
- İç sayfa
- Blog
- Ürün
- Hizmet
- Form
- Blok partial'ları

Aktif tema veritabanındaki site ayarından okunmalıdır:

```text
aktif_tema = corporate
```

İlk sürümde tema marketi yapılmayacaktır. Ancak klasör yapısı ve ayar sistemi buna uygun hazırlanmalıdır.

## 7. Blok Sistemi

LikaWEB'in ana esnekliği blok sisteminden gelecektir.

Amaç:

```text
İçeriği tasarımdan ayırmak.
```

Örnek bloklar:

- Hero
- Features
- Products
- Services
- References
- FAQ
- CTA
- Slider
- Contact
- Gallery
- Video
- Map

Sayfa yapısı:

```text
Sayfa
└─ Bloklar
   ├─ Hero
   ├─ Features
   ├─ Products
   ├─ CTA
   └─ Contact
```

Her tema aynı blok verisini farklı şekilde gösterebilir. Böylece tema değiştiğinde içerik kaybolmaz.

Önerilen tablolar:

- `blok_tipleri`
- `sayfa_bloklari`

Önerilen `sayfa_bloklari` alanları:

- `sayfa_blok_id`
- `sayfa_id`
- `blok_tipi`
- `baslik`
- `alt_baslik`
- `icerik`
- `veri` JSON
- `sira`
- `durum`
- `olusturulma_tarihi`
- `guncellenme_tarihi`

İlk sürümde görsel drag & drop builder yapılmayacaktır. Bloklar admin form ekranlarıyla yönetilecektir.

## 8. Menü Sistemi

Tablolar:

- `menuler`
- `menu_ogeleri`

Özellikler:

- Ana menü
- Footer menü
- Mobil menü
- Alt menü
- Sıralama
- Özel link
- Sayfa bağlantısı
- Yeni sekmede açma
- Aktif/pasif durum

Sürükle bırak sıralama ilk sürüme alınabilir, fakat zorunlu değildir. İlk sürümde sıra alanı ile yönetim yeterlidir.

## 9. Sayfa Yönetimi

Tablo:

- `sayfalar`

Alanlar:

- Başlık
- Slug
- İçerik
- Meta title
- Meta description
- Canonical URL
- Open Graph görseli
- Durum
- Sıralama

Örnek sayfalar:

- Hakkımızda
- İletişim
- KVKK
- Gizlilik Politikası
- Referanslar

Sayfaların klasik içerik alanı olabilir; ancak ana esneklik sayfa blokları üzerinden gelmelidir.

## 10. Medya Kütüphanesi

WordPress benzeri medya sistemi bulunmalıdır.

Tablo:

- `medya`

Alanlar:

- `medya_id`
- `dosya_adi`
- `orijinal_dosya_adi`
- `dosya_yolu`
- `disk`
- `mime_type`
- `dosya_boyutu`
- `alt_metin`
- `baslik`
- `olusturulma_tarihi`

Desteklenecek dosyalar:

- JPG
- PNG
- WEBP
- SVG
- PDF
- MP4

Özellikler:

- Çoklu yükleme
- Sürükle bırak yükleme
- Görsel önizleme
- Medya seçici modal
- Dosya tipi kontrolü
- Dosya boyutu kontrolü

## 11. Form Builder

Dinamik form oluşturucu bulunmalıdır.

Form türleri:

- İletişim
- Teklif talebi
- Demo talebi
- Başvuru formu

Alan türleri:

- Text
- Textarea
- Select
- Radio
- Checkbox
- Date
- Email
- Phone
- File upload

Önerilen tablolar:

- `formlar`
- `form_alanlari`
- `form_gonderimleri`

Form gönderimlerinde spam koruması olmalıdır:

- Honeypot
- Rate limiting
- reCAPTCHA opsiyonu

## 12. SEO Sistemi

Her içerikte şu alanlar bulunmalıdır:

- Meta title
- Meta description
- Canonical URL
- Open Graph başlığı
- Open Graph açıklaması
- Open Graph görseli

Otomatik üretilecek dosyalar:

- `sitemap.xml`
- `robots.txt`

SEO alanları sayfa, blog, ürün, hizmet ve benzeri içeriklerde ortak bir yapı ile ele alınmalıdır.

## 13. Modül Sistemi

Her kurulumda ihtiyaç farklıdır. Bu nedenle modüller açılıp kapatılabilir olmalıdır.

Önerilen tablo:

- `moduller`

Örnek kayıtlar:

| Modül | Durum |
| --- | --- |
| Blog | Aktif |
| Galeri | Pasif |
| Referanslar | Aktif |
| Kariyer | Pasif |

Kod tarafında her modül kendi controller, view, migration ve ayar yapısını net sınırlarla taşımalıdır.

İleri aşama için her modüle bir manifest dosyası eklenebilir:

```text
modules/Blog/module.json
modules/Gallery/module.json
```

İlk sürümde dosya bazlı manifest zorunlu değildir; veritabanı tabanlı aktif/pasif yönetim yeterlidir.

## 14. Kullanıcı ve Yetkilendirme

Roller:

- Super Admin
- Yönetici
- Editör
- Görüntüleyici

Yetkilendirme modül bazlı olmalıdır.

Örnek:

- Sayfa görüntüleme
- Sayfa düzenleme
- Sayfa silme
- Medya yükleme
- Form gönderimlerini görüntüleme
- Ayarları düzenleme

İlk sürümde basit rol bazlı yetki yeterlidir. İleri sürümde detaylı permission tablosuna geçilebilir.

## 15. Kurulum Sihirbazı

Yeni kurulum sırasında aşağıdaki bilgiler alınmalıdır:

- Site adı
- Site sloganı
- Logo
- Tema
- Admin kullanıcı
- Varsayılan sayfalar
- Varsayılan menü
- Varsayılan ana sayfa blokları

Kurulum sihirbazı ilk kurulumda çalışmalı, kurulum tamamlandıktan sonra tekrar erişilememelidir.

Önerilen kontrol:

```text
sistem_surumu.kurulum_tamamlandi = true
```

## 16. İçe / Dışa Aktarma

Yeni site oluşturma süresini azaltmak için içe/dışa aktarma sistemi olmalıdır.

Dışa aktarılabilecek veriler:

- Sayfalar
- Menüler
- Bloklar
- Formlar
- Ayarlar
- Tema ayarları

Önerilen format:

```text
JSON paket + medya dosyaları
```

Bu özellik sayesinde Lika Yazılım için oluşturulan bir başlangıç paketi başka kurulumlarda temel alınabilir.

## 17. Güncelleme Sistemi

Bu mimarinin en kritik parçası güncelleme stratejisidir.

Her site bağımsız kurulum olduğu için çekirdek güncellemeleri kontrollü yapılmalıdır.

Önerilen yapı:

- Tek LikaWEB Git reposu
- Her site aynı repodan deploy edilir
- Migration'lar geriye uyumlu yazılır
- Güncellemeden önce otomatik yedek alınır
- Güncellemeden sonra sistem sürümü yükseltilir

Tablo:

- `sistem_surumu`

Alanlar:

- `surum`
- `kurulum_tarihi`
- `son_guncelleme`
- `kurulum_tamamlandi`

Önemli kural:

```text
Çekirdek güncelleme, müşteri projesine özel dosyaları ezmemelidir.
```

Bu nedenle özel geliştirmeler mümkün olduğunca tema, modül veya konfigürasyon katmanında tutulmalıdır.

## 18. Güvenlik

Bulunması gereken sistemler:

- CSRF koruması
- Rate limiting
- XSS koruması
- Dosya tipi kontrolü
- Dosya boyutu kontrolü
- Honeypot
- reCAPTCHA opsiyonu
- Audit log
- Güvenli admin oturumu
- Yetkisiz dosya erişimi engeli

Özellikle medya yükleme ve form gönderimleri güvenlik açısından önceliklidir.

## 19. Yedekleme

Admin panelden aşağıdaki yedekler alınabilmelidir:

- Veritabanı yedeği
- Dosya/storage yedeği

İlk sürümde manuel yedek alma yeterlidir. İleri sürümde zamanlanmış otomatik yedekleme eklenebilir.

## 20. Gelecek Sürümler

İlk sürüme dahil değildir; ancak mimari uygun hazırlanmalıdır:

- Çoklu dil
- E-ticaret
- Üyelik sistemi
- Forum
- LMS
- API yönetimi
- Mobil uygulama API
- Headless CMS

Bu başlıklar ilk sürümün kapsamını büyütmemelidir.

## 21. Elementor Benzeri Yapı Hedefi

İlk sürümde Elementor benzeri tam görsel builder yapılmayacaktır.

Gelişim sırası:

1. Sürüm 1: Blok sistemi
2. Sürüm 2: Mini page builder
3. Sürüm 3: Drag & drop sayfa oluşturucu
4. Sürüm 4: Tam görsel builder

İlk hedef sağlam veri modeli, tema uyumu ve yönetilebilir blok formlarıdır.

## 22. Geliştirme Sırası

### Aşama 1

- Ayarlar sistemi
- Medya kütüphanesi
- Tema sistemi

### Aşama 2

- Menü yönetimi
- Sayfa yönetimi
- Blok sistemi

### Aşama 3

- SEO sistemi
- Form builder
- Referanslar

### Aşama 4

- Kurulum sihirbazı
- İçe/dışa aktarma
- Modül yönetimi

### Aşama 5

- Güncelleme sistemi
- Tema marketi altyapısı
- Mini page builder

## 23. İlk Sürüm İçin Önerilen Net Kapsam

İlk sürümde mutlaka olmalı:

- Ayarlar
- Tema seçimi
- Sayfa yönetimi
- Menü yönetimi
- Ana sayfa blok yönetimi
- Medya kütüphanesi
- SEO alanları
- İletişim/demo formu
- Kullanıcı/rol yönetimi

İlk sürümde ertelenmeli:

- Tam görsel builder
- Tema marketi
- E-ticaret
- Çoklu dil
- Headless CMS
- Forum
- LMS
- Tek panelden çoklu site yönetimi

## 24. Mevcut LikaWEB İçin Dönüşüm Notu

Mevcut LikaWEB kodunda zaten şu parçalar vardır:

- Admin panel
- Ayarlar
- Sayfalar
- Ürünler
- Ana sayfa bölümleri
- Demo talepleri
- Yönetici girişi

Bu kodlar atılmamalıdır. Ancak isimlendirme ve kapsam CMS çekirdeğine göre genişletilmelidir.

Öncelikli dönüşüm:

1. Sabit Lika Yazılım metinleri ayarlara taşınmalı.
2. `welcome.blade.php` blok mantığına ayrılmalı.
3. Menü sabit linklerden tablo bazlı yapıya geçmeli.
4. Medya yönetimi eklenmeli.
5. Tema klasör yapısı kurulmalı.
6. Formlar dinamik forma dönüştürülmeli.

## 25. Nihai Vizyon

LikaWEB;

- WordPress benzeri kullanımı kolay,
- Laravel kadar güçlü,
- Kurumsal projelere uygun,
- Bağımsız kurulabilen,
- Modüler,
- Güvenli,
- Ölçeklenebilir,
- Profesyonel

bir CMS platformu olacaktır.

Her domain kendi kurulumuna sahip olacak, ancak tüm kurulumlar aynı LikaWEB çekirdeğini kullanacaktır.

Amaç, Türkiye'nin modern Laravel tabanlı CMS platformlarından biri haline gelmektir.

