NEXT-GEN CONTENT MANAGEMENT FRAMEWORK

CPalius CMF

Bir İçerik Yönetim Sisteminden
"Kurşun Geçirmez" Kurumsal Uygulama Framework'üne

Modern web ekosisteminde hazır eklenti sistemleriyle donatılmış ama hantal CMS'ler ile her şeye sıfırdan başlamayı gerektiren saf framework'ler arasındaki köprüyü kuran, dünya standartlarında optimize, güvenli ve genişletilebilir altyapı.

PHP 8.2+ Symfony 7.4 LTS Doctrine ORM AssetMapper Açık Kaynak

Son Forum Konuları

Tüm konuları gör »
Konu Yanıt Güncelleme
Windows ortamında uygulama bulunamadı hatası
Destek & Hatalar · slaweally
3 27.08.2026
Cron görevleri ve arka plan işleri
Sistem & Performans · slaweally
4 27.08.2026
Node türleri ve hibrit alan modeli hakkında
Studio & İçerik · slaweally
4 26.08.2026
Eski CMS'lerden CPalius'a geçiş deneyimleri
Serbest Konuşma · slaweally
3 26.08.2026
Özel modülde hook ve event kullanımı
Modül Geliştirme · slaweally
4 26.08.2026
CPalius ile kurduğumuz kurumsal site
Proje Vitrini · slaweally
2 26.08.2026

Teori, Pratik ve "Tekerleği Yeniden İcat Etme" Sancısı

Neden CPalius?

Modern web geliştirmede her yeni proje, iki ucu keskin bir bıçağın üzerinde başlar. CPalius bu iki dünya arasındaki boşluğu doldurmak için doğdu.

Mevcut Sorunlar

Klasik CMS'ler (WordPress, Drupal)

Hazır eklenti ve tema sistemleriyle donatılmış ancak hantal veritabanı şemaları, teknik borç dağları ve güvenlik zaafiyetleriyle boğuşan yapılar.

Saf Framework'ler (Symfony, Laravel)

Her projede auth, ACL, dosya yönetimi ve admin paneli gibi temel bileşenleri sıfırdan yazarak zaman kaybettiren yaklaşım.

Sıfırdan MVC Romantizmi

Kendi framework'ünü yazmak kulağa romantik gelse de güvenlik (CSRF, XSS, SQLi), DI Container ve HTTP katmanı gibi devasa bir "görünmez buzdağı" barındırır.

CPalius Çözümü

Dünya Standartlarında Altyapı

Symfony 7.4 LTS'nin kanıtlanmış güvenlik ve performans altyapısı üzerine inşa edilmiş, teknik borçtan arınmış mimari.

Hazır Kurumsal Bileşenler

Auth, ACL, dosya yönetimi, çok dilli yapı ve admin paneli gibi temel bileşenler ilk günden çekirdekte. Tekerleği yeniden icat etmeye son.

Modüler ve Genişletilebilir

CMS'ten öte bir uygulama platformu: Oto Galeri, Turizm Acentası, CRM/ERP — hepsi aynı altyapı üzerinde çalışır.

Çökmeyen Çekirdek

Kullanıcı modüllerinden gelen hatalar sistemi asla çökertmez. 3 kademeli aktif savunma ve karantina hattı.

Veri Modeli ve Platform Yetenekleri

Bölüm 3 — 4

Hibrit veri modeli, yüksek performanslı indeksleme ve çok dilli yapı — tümü ilk günden çekirdeğin hücrelerine işlenmiştir.

Hibrit Veri Modeli

Sık sorgulanan temel alanlar (ID, Başlık, Slug, Durum) gerçek sütunlarda; dinamik, esnek alanlar (gövde, SEO, galeri) tek bir JSON sütununda. EAV'ın JOIN cehenneminden ve WordPress'in meta karmaşasından kurtulun.

Flat Field Index Motoru

JSON verilerini veritabanı bağımsız sorgulayın. NodeFieldIndex tablosu ve Doctrine Event Listener ile tip-uygun kolonlara sahip indeks tablosu. SQLite, MySQL ve Postgres'te aynı DQL çalışır.

Çok Dilli Yapı (i18n)

Çoklu dil ilk günden çekirdeğe işlendi. Kompozit benzersizlik kısıtları ile UNIQUE(slug, locale) ve UNIQUE(translation_group_id, locale) güvencesi. Dil sonradan eklenen bir cila değildir.

Config Sync Sistemi

Drupal'ın config sync yaklaşımı, Symfony TreeBuilder ile birleştirildi. Roller ve yetenek matrisleri YAML dosyalarında tutulur, Git ile taşınır. Kullanıcı verileri ise veritabanında kalır.

Modüler Bundle Mimarisi

Her modül bağımsız bir Symfony Bundle olarak çalışır. Kendi routes, services, templates ve migrations dosyalarına sahiptir. Modules\\ namespace'i ile tam izolasyon.

Zero Node.js Politikası

Geliştirici ve admin panelinde AssetMapper + Standalone Tailwind CSS kullanılır. Node.js bağımlılığı sıfır. Derleme adımı yok, doğrudan geliştirme — doğrudan deploy.

Topluluk Özeti

Tüm konuları gör »
20
konu
62
mesaj
12
pano

Son Forum Mesajları

Tüm konuları gör »
Konu Yazar Güncelleme
Windows ortamında uygulama bulunamadı hatası Ali Çömez 27.08.2026 11:47
Cron görevleri ve arka plan işleri Ali Çömez 27.08.2026 11:46
Node türleri ve hibrit alan modeli hakkında Ayşe Yılmaz 26.08.2026 22:18
Eski CMS'lerden CPalius'a geçiş deneyimleri Mehmet Kaya 26.08.2026 21:18
Özel modülde hook ve event kullanımı Zeynep Demir 26.08.2026 20:18
Cron görevleri ve arka plan işleri Can Öztürk 26.08.2026 19:18

"Pristine Root" ve Klasör Mimarisi

Bölüm 1

Standart bir Symfony projesinde üçüncü parti paketler ve tarifler yüklendikçe ana dizin dosya çöplüğüne döner. CPalius, "Tertemiz Ana Dizin" politikasını benimsedi.

pristine-root
CPalius/
│
├── cp-core/          # KERNEL & SYSTEM SPACE
│   ├── bin/          # Konsol komut aracı
│   ├── config/       # Core konfigürasyonları
│   ├── migrations/   # Veritabanı göç dosyaları
│   ├── src/          # PHP sınıfları (App\\)
│   └── var/          # Cache, log, SQLite
│
├── cp-includes/      # DEPENDENCIES SPACE
│   └── vendor/       # Composer paketleri
│
├── cp-content/       # USER & DEVELOPER SPACE
│   ├── config/       # Config Sync alanı
│   ├── modules/      # Bağımsız modüller
│   ├── themes/       # UI temaları
│   └── translations/ # Çeviriler (tr, en)
│
├── public/           # WEB ROOT
│   ├── index.php     # Front Controller
│   └── assets/       # Frontend varlıkları
│
├── .env
└── composer.json
cp-core/ Kernel & System Space

Çekirdek PHP sınıfları, konfigürasyonlar, konsol araçları ve veritabanı göç dosyaları. Symfony Flex tariflerinin doğrudan bu alana kurulması garanti altındadır.

cp-includes/ Dependencies Space

Composer paketleri ve Symfony kütüphaneleri bu izole alanda tutulur. vendor-dir yeniden yapılandırılmıştır.

cp-content/ User & Developer Space

Modüller, temalar, çeviriler ve Config Sync alanı. Geliştiricinin kendi kodları ile framework sistem dosyaları asla birbirine karışmaz.

public/ Web Root

Dışarıya açık tek klasör. Front Controller (index.php) ve derlenmiş frontend varlıkları burada yer alır. Güvenlik sınırı.

"Core Never Dies" — Çökmeyen Çekirdek Mimarisi

Bölüm 2

Kullanıcı alanından gelebilecek kötü yazılmış veya bozuk kodların tüm sistemi kilitlemesini engelleyen Üç Kademeli Aktif Savunma ve Karantina Hattı.

1
1. Savunma Hattı

Tavuk-Yumurta Probleminin Çözümü

Symfony boot edilirken config/bundles.php dosyası okunur. Bu aşamada henüz veritabanı bağlantısı, servis konteyneri veya autoloader tam olarak ayağa kalkmamıştır. Modüllerin aktiflik durumunu doğrudan veritabanından okumaya çalışırsak, sistem daha boot edilemeden kilitlenir.

Çözüm: CPalius, bir modül aktif/pasif edildiğinde active_modules.php adında statik, PHP opcache dostu bir dizi dosyası üretir. bundles.php sadece bu dosyayı okur — veritabanına hiç dokunmaz.

cp-core/config/bundles.php
// Çekirdek her zaman ayakta
$bundles = [
    FrameworkBundle::class => ['all' => true],
    TwigBundle::class      => ['all' => true],
    DoctrineBundle::class  => ['all' => true],
    CoreBundle::class      => ['all' => true],
];

// Aktif modülleri dosyadan oku
$activeModules = require 'active_modules.php';
foreach ($activeModules as $moduleClass) {
    if (class_exists($moduleClass)) {
        $bundles[$moduleClass] = ['all' => true];
    }
}
2
2. Savunma Hattı

Çalışma Zamanı İzolasyonu

Sınıfın fiziksel olarak var olması (class_exists), o modülün kodunun hatasız çalıştığı anlamına gelmez. Modülün boot() metodu içinde fırlatacağı bir TypeError veya RuntimeException tüm sistemi çökertebilir.

Çözüm: Kernel::boot() metodu override edilerek modül seviyesindeki tüm boot süreçleri try/catch (\Throwable) zırhıyla kuşatıldı. Hatalı modül otomatik karantinaya alınır, çekirdek çalışmaya devam eder.

3
3. Savunma Hattı

Compile-Time Kilitlenme Koruması & Dry-Run

Eklentideki geçersiz bir YAML sözdizimi veya yanlış bir DI tanımı, Symfony container'ı derlenemez hale getirir. Bu durumda terminalde komut bile çalıştırılamaz.

Çözüm: Modül aktive edilmeden önce symfony/process ile izole bir alt süreç başlatılır. Bu süreçte cache:clearlint:yamllint:container komutları koşturulur. Hata varsa aktivasyon iptal edilir ve modül kalıcı olarak karantinaya alınır. Dosya asla bozuk haliyle kaydedilmez.

Kanıtlanmış Temeller Üzerine İnşa

Teknoloji Yığını
PHP 8.2+

Çekirdek Dil

Symfony 7.4 LTS

Framework Temeli

Doctrine ORM

Veritabanı Katmanı

AssetMapper

Frontend Varlıkları

Tailwind CSS

Standalone Binary

İki Sınıf Varlık: Content vs Business

Bölüm 5

CPalius sadece bir CMS değildir; arkasında Oto Galeri, Turizm Acentası, Personel Yönetimi veya CRM/ERP sistemlerinin çalışabileceği esnek bir uygulama platformudur.

Özellik Content Entities (Node) Business Records (Resource)
Kavramsal Karşılık Sayfa, Yazı, İlan Vitrini, Blog Araç, Fatura, Rezervasyon, Personel
Slug Var — SEO dostu URL üretimi Yok — İç yönetim kaydı
Çoklu Dil Var — translation_group_id ile Yok — Tek dilli kayıt
Yayın Durumu Var — draft / published / archived Yok — Durum makinesi (workflow)
SEO Var — Meta bilgileri JSON data içinde Yok — Herkese açık değil
Ortak Payda Aynı Capability modeli, aynı Twig bileşenleri, aynı CLI yönetimi, aynı Config Sync

#[CpResource] Devrimi

Geliştiricinin iş süreçlerini kodlamasını saniyeler seviyesine indirmek için özel bir PHP Attribute yapısı tasarlandı. Tek bir anotasyon ile veritabanındaki ham bir Doctrine sınıfını platformun tüm güçleriyle birleştiriyoruz.

Bu tek nitelik sayesinde:

  • Rol ve yetenek matrisine dinamik yetenekler otomatik kaydolur
  • Otomatik CRUD formları ve liste ekranları dinamik türetilir
  • SaaS çoklu kiracı izolasyonu otomatik uygulanır
  • Tüm değişiklikler sürüm geçmişine (audit log) kaydedilir
Örnek: Vehicle Entity
#[CpResource(
    name: 'vehicle',
    module: 'oto-galeri',
    capabilities: [
        'create','edit',
        'delete','view'
    ],
    auditable: true,
    multiTenant: true,
    workflow: 'vehicle_lifecycle'
)]
#[ORM\Entity]
class Vehicle
{
    private ?int $id;
    private ?string $plate;
    private ?string $brand;
    private ?int $price;
}

Güvenlik ve Performans Anayasası

Bölüm 6

Güvenlik ve performans, projenin son aşamasında "üzerine eklenen" bir cila değildir; sistemin en temel yapı taşlarıdır.

Yetenek Tabanlı Erişim Kontrolü (CBAC)

Standart ROLE_ADMIN yaklaşımı yerine dinamik olarak üretilen yetenekler kontrol edilir. Kodun hiçbir yerinde rol ismi kontrol edilmez.

denyAccessUnlessGranted('system.module.manage')

Roller = Config (YAML): Git ile taşınır.
Kullanıcılar = Content (DB): Asla dışa aktarılmaz.

SaaS Tenant Sızıntı Koruması

Çok kiracılı (SaaS) sistemlerde en büyük güvenlik açığı: yazılımcının WHERE tenant_id = ? yazmayı unutması.

CPalius'ta bu ihtimal platform seviyesinde yok edilmiştir. Doctrine SQLFilter otomatik olarak her sorguya tenant kısıtını enjekte eder.

N+1 Sorgu Muhafızı

Veritabanı yavaşlıklarının en yaygın sebebi olan N+1 sorgu hatalarını engelleyen Doctrine Listener. Dev ortamında tetiklenir.

Tek HTTP isteğinde aynı tabloya atılan sorgu sayısı limiti aşarsa MaxQueriesExceededException fırlatılır.

Platform Özeti

İstatistik
0
Savunma Hattı
0
N+1 Toleransı
Modül Kapasitesi
0
Açık Kaynak

Gelecek Yol Haritası

Bölüm 7

Çekirdek güvenlik, performans ve mimari omurga tamamlandı. Sıradaki geliştirme sprintlerinde aşağıdaki sistemler inşa edilecek.

Sprint 1

Safe Mode & Kurtarma Konsolu

cp-content altındaki tüm modüller çöktüğünde bile ayakta kalabilen, bağımsız varlıkları olan ve sistem yöneticisinin bozuk modülleri kapatmasını sağlayan izole web konsolu.

Sprint 2

Workflow & State Machine

Fatura, araç, rezervasyon gibi iş kayıtlarının geçiş süreçlerini (draft → preparation → sold) YAML tanımlarıyla yöneten ve her geçişi otomatik audit log'a bağlayan mekanizma.

Sprint 3

Asset Sistemi

Pimcore tarzı bağımsız medya kütüphanesi. Flysystem (S3, MinIO) ve LiipImagineBundle entegrasyonu ile URL üzerinden anlık görsel türetme sunan modern dosya yönetimi.

Mimariyi Birlikte Kusursuzlaştıralım

Topluluk

CPalius, topluluğun gücüyle en sağlam uygulama framework'üne dönüşecek. Fikirlerinizi, eleştirilerinizi ve mimari önerilerinizi heyecanla bekliyoruz.