Proje 3 dk okuma

CPalius Portal İskeleti: Modüler CMS’den Canlı Bir Ön Yüze

CPalius CMF üzerinde portal blokları, tema katmanı ve blog/forum modüllerini birleştiren örnek bir açık kaynak iskeletin mimari notları.

· sys@rootali.net · 3 dk okuma
CPalius Portal İskeleti: Modüler CMS’den Canlı Bir Ön Yüze
Proje

CPalius Portal İskeleti, CPalius CMF’nin modüler yapısını gerçek bir ön yüz deneyimine dönüştürmek için tasarlanmış bir referans projedir. Amaç “her şeyi içeren monolit bir tema” üretmek değil; blog, forum ve portal bloklarını aynı istek yaşam döngüsünde tutarlı biçimde sunan ince bir kompozisyon katmanı oluşturmaktır. Bu yazıda projenin mimari kararlarını, dizin düzenini ve günlük geliştirme ritmini anlatıyoruz. Okuyucunun projeyi çatallayıp ilk günde anlamlı bir ekran görmesi temel başarı ölçütüdür.

İskeletin merkezinde tema katmanı vardır. Tema, HTML iskeletini, tipografi ve boşluk sistemini, navigasyonu ve paylaşılan kısmi şablonları taşır. Modüller ise kendi domain’lerine ait şablonları tema ad alanına override ederek sunar. Böylece blog arşivi temanın dilini konuşurken, forum konu listesi de aynı breadcrumb ve sidebar dilini paylaşır. Bu yaklaşım, her modülün kendi CSS evrenini yaratmasını engeller ve marka tutarlılığını korur. Görsel borç, çoğu zaman modül başına özel “mini tema” üretmekten doğar.

Portal blokları ikinci kritik parçadır. Ana sayfa bir “tek şablon” olmaktan çıkar; yapılandırılabilir blok sıralamasına dönüşür. Her blok bir veri sağlayıcıya bağlanır: son yazılar, popüler konular, forum panoları veya özel HTML. Blokların görünürlüğü, limiti ve yerleşimi Studio üzerinden yönetilir. Bu sayede pazarlama ekibi kod deploy etmeden ana sayfa kompozisyonunu değiştirebilir; geliştirici ise yalnızca yeni blok tipleri ekler. Yapılandırma JSON’u versiyonlanabilir ve ortamlar arasında taşınabilir tutulmalıdır.

Veri erişiminde modül servisleri sınırdır. Temanın doğrudan repository çağırması bilinçli olarak tercih edilmez. Bunun yerine blog görünüm servisi, forum istatistik servisi ve portal blok sağlayıcıları ortak bir sözleşme üzerinden çalışır. Bu ayrım, N+1 sorgularını erken yakalamayı ve önbellek stratejisini tek yerde toplamayı kolaylaştırır. Liste sayfalarında eager join, detay sayfalarında ise ihtiyaç duyulan ilişkilerin seçilmesi temel kuraldır. Servis katmanı olmadan tema şişer ve test edilemez hale gelir.

Routing tarafında her modül kendi ön yüz rotalarını getirir. Tema yalnızca ortak layout’u sağlar. Bu, “tema büyüdükçe her şeyi bilen bir tanrı nesnesine dönüşmesin” ilkesinin pratik karşılığıdır. Yeni bir içerik tipi eklendiğinde tema dosyalarına yüzlerce satır eklemek yerine, ilgili modülün Twig ad alanı genişletilir. Gerekirse tema override ile görsel ince ayar yapılır. Rota isimleri tutarlı tutulursa menü yönetimi de sadeleşir.

Projeyi yerel ortamda ayağa kaldırmak için Laragon veya Docker yeterlidir. Ortam değişkenleri, varlık derlemesi ve medya dizini izinleri README’de adım adım yer alır. Geliştirici deneyimini hızlandırmak için örnek içerik seed komutları ve temel duman testleri eklenmiştir. Amaç, katkı veren birinin ilk günde hem admin hem ön yüz akışını görmesidir. “Çalıştırılamayan demo”, katkı bariyeridir.

Stil sisteminde aşırı soyutlama bilinçli olarak sınırlandırılmıştır. Bir avuç CSS değişkeni, tutarlı spacing ölçeği ve modül önekli BEM sınıfları yeterlidir. Portal slider, blog hero ve kategori haritası gibi parçalar aynı navigasyon yüksekliği ve tipografi ritmini paylaşır. Böylece yeni bir bileşen eklendiğinde tasarım sistemi yeniden icat edilmez; mevcut dil genişletilir. İstisnalar belgelenir, sessizce çoğalmaz.

Güvenlik açısından iskelet, yetenek tabanlı erişim kontrolünü varsayar. Studio ve AACP panelleri ayrı panellerdir; içerik düzenleme ile sistem yönetimi karışmaz. CSRF, XSS ve yükleme güvenliği çekirdek katmanda ele alınır. Tema yalnızca güvenli kaçışlı Twig çıktısı üretir; ham HTML yalnızca bilinçli olarak işaretlenmiş alanlarda kullanılır. Medya seçici ve yükleme akışları da aynı güvenlik varsayımlarını paylaşır.

Gözlemlenebilirlik de referans projenin parçasıdır. Sorgu sayacı, yavaş sayfa logları ve temel uptime kontrolleri örnek olarak bağlanmıştır. Böylece performans regresyonu “hissetmek” yerine ölçülür. Katkı modeli küçük PR’ları, net kabul kriterlerini ve görsel regresyon notlarını bekler. “Çalışıyor” yeterli değildir; erişilebilirlik, mobil kırılım ve sorgu sayısı da kontrol listesindedir.

CPalius Portal İskeleti’nin başarısı, tek bir demoyu şık göstermek değil; ekiplerin kendi markalarını aynı omurga üzerinde güvenle büyütmesidir. Modülerlik slogan değil, günlük geliştirme hızının kaynağı olmalıdır. Bu iskelet o hedefe giden pratik bir başlangıç noktasıdır.