Contentful ve DatoCMS'e alternatif

Bir panel, N proje, trafikle büyümeyen fatura

API-first, çok kiracılı headless CMS. Okuma yolu API'ye hiç uğramaz — ziyaretçi arttıkça faturanız değil, cache isabetiniz artar.

Veriniz bizim yönettiğimiz sunucularda Kullanım başına ücretlenen dış servis yok Kurumsal planda kendi sunucunuza kurulum

Sayılarla okuma yolu

Okumada veritabanı sorgusu
0
Bir sayfa için HTTP isteği
2
Tipo toleranslı arama yanıtı
<50 ms
Ayrı ayrı kapatılabilir modül
7+

Özellikler

İçerik altyapısı, dert değil

Her şey API'nin arkasında; hiçbir özellik panele kilitli değil.

Çok kiracılık ve RLS

Her proje ayrı bir alan. İzolasyon uygulamada değil veritabanında: PostgreSQL satır düzeyi güvenlik, uygulama katmanı hata yapsa bile bir kiracının verisini diğerine sızdırmaz.

Şema motoru ve alan rolleri

İçerik tipleri koda gömülü değil; panelden veya API'den tanımlanır. Alanlar title, slug, body gibi roller taşır — derleme hattı ve SEO üretimi alan adına değil role bakar.

Modül mimarisi

Medya, arama, webhook, SEO, GraphQL, ithalat, analitik — hepsi ayrı ve kapatılabilir. Kapatmak veri silmez; modülü açtığınızda kaldığı yerden devam eder.

Kenardan servis edilen okuma

Yayınlanan içerik derleme anında değişmez bir adrese yazılır ve nginx kenar cache'inden servis edilir. İçerik sayısı da ziyaretçi sayısı da okuma maliyetini artırmaz.

Medya kütüphanesi

S3 uyumlu nesne deposu (Garage), üç bölgeye kopyalanan görseller ve otomatik türevler. Yüklediğiniz dosya kendi altyapımızda kalır, kullanım başına ücretlenen bir CDN'e gitmez.

Tipo toleranslı arama

Typesense destekli, çok dilli tam metin arama. "İstanul" yazan ziyaretçi de doğru içeriği bulur; yanıt 50 milisaniyenin altında döner.

Webhook'lar

Yayınlama, güncelleme, silme — her olayda sisteminize haber gider. Teslimat kalıcı kuyrukta tutulur ve üstel geri çekilmeyle yeniden denenir; süreç ölse bile olay kaybolmaz.

GraphQL

Şema elle yazılmaz; alanın içerik tiplerinden türetilir. Yeni bir tip eklediğinizde sorgulanabilir hâle gelir. Derinlik ve uzunluk sınırları sorgu bombasına karşı zorunlu.

Tip güvenli SDK

@corpusctl/client ile React, Vue ve Next.js adaptörleri. Blok render'ıcıları sıfır varsayılan stille gelir — tek satır CSS dayatmayız, tasarım tamamen sizin.

Kod örnekleri

Panelden de olur, tek satır komutla da

Panelde yapabildiğiniz her şeyin API karşılığı var; hiçbir özellik arayüze kilitli değil.

yayinla.sh
# 1) İçerik tipini tanımla — şema koda gömülü değil
curl -X PUT "$API/v1/content-types/yazi" \
  -H "authorization: Bearer $TOKEN" \
  -H "x-corpusctl-tenant: $TENANT" \
  -H "content-type: application/json" \
  -d '{
    "name": "yazi",
    "title": "Yazı",
    "fields": [
      { "name": "baslik", "type": "text",   "role": "title", "required": true },
      { "name": "yol",    "type": "slug",   "role": "slug",  "required": true },
      { "name": "govde",  "type": "blocks", "role": "body" }
    ]
  }'

# 2) Taslak oluştur
curl -X POST "$API/v1/documents" \
  -H "authorization: Bearer $TOKEN" \
  -H "x-corpusctl-tenant: $TENANT" \
  -d '{ "type": "yazi", "data": { "baslik": "Merhaba", "yol": "merhaba" } }'

# 3) Yayınla — doğrulama, derleme ve kenara taşıma tek çağrıda
curl -X POST "$API/v1/documents/$ID/publish" \
  -H "authorization: Bearer $TOKEN" \
  -H "x-corpusctl-tenant: $TENANT"

# → { "data": { "version": 3, "contentHash": "…", "durationMs": 42 } }

Okuma yolu veritabanına dokunmaz

  • İçerik adresli cache. Adres, içeriğin hash'i. Değişmediği için süresiz saklanabilir — "bayat veri" diye bir sorun kalmıyor.
  • Trafik büyüyünce maliyet büyümez. Okuma isteği API'ye uğramadığı için ölçülecek bir çağrı yok; fatura ziyaretçiyle birlikte artmıyor.
  • Yazma ve okuma ayrı sınıflarda. ReadClient gizli token taşımaz, tarayıcıda çalışabilir; ManagementClient yalnız sunucuda. Tek sınıf olsaydı token sızdırmak bir satırlık hata olurdu.

Mimari

Yazma yolu ayrı, okuma yolu ayrı

Yayınla düğmesi bir derleme tetikler; ziyaretçi o derlemenin çıktısını okur, sistemi değil.

YAZMA YOLU OKUMA YOLU (HIZLI) Panel · ManagementClient API — NestJS PostgreSQL RLS · partition yayınla Derleme hattı Frontend · ReadClient nginx kenar cache isabet → ms cinsinden yanıt ıskalarsa origin — nginx Nesne deposu — S3 uyumlu <tenant>/c/<hash>.json · değişmez yaz oku
İki yol yalnızca nesne deposunda buluşur. Ziyaretçi trafiği API'ye ve PostgreSQL'e hiç ulaşmadığı için yazma tarafındaki yük okuma tarafından tamamen bağımsızdır.

Değişmez adres

İçerik hash'iyle adreslenir. Aynı adres asla farklı bir içerik döndürmez, bu yüzden 30 gün cache'lenebilir; yayın anında manifesto tazelenir.

Manifesto parçalanır

Slug'dan hangi manifesto parçasının okunacağı istemcide hesaplanır. On bin içerikli bir alanda da tek bir küçük dosya indirilir.

Sürüm ve zamanlama

Her kayıt sürümlenir, eski sürüm taslağa geri yüklenebilir. İleri tarihli yayın zamanlanır; zamanlayıcı derlemeyi kendisi tetikler.

Karşılaştırma

Nerede öndeyiz, nerede değiliz

Her satırda kazanan biz değiliz. Aşağıdaki tablo neyi seçtiğinizi açıkça göstersin diye var.

corpusctl, Contentful ve DatoCMS karşılaştırması — Ağustos 2026 itibarıyla kamuya açık ürün bilgilerine dayanır.
Ölçüt corpusctl Contentful DatoCMS
Fiyat modeli Sabit plan. Okuma isteği API'ye uğramadığı için ölçülen bir çağrı yok. API çağrısı, kayıt ve kullanıcı başına ölçülür; aşımda ek ücret. API çağrısı ve trafik (bandwidth) başına ölçülür.
Çok proje yönetimi Çekirdekte. Tek panel, sınırsız alan; kullanıcı her alanda ayrı rol taşır. Her proje ayrı "space"; çoğu planda space başına ücret. Her proje ayrı ortam; proje başına plan.
Kiracı izolasyonu Veritabanı seviyesinde — PostgreSQL satır düzeyi güvenlik (RLS). Uygulama seviyesinde; ayrıntı açıklanmıyor. Uygulama seviyesinde; ayrıntı açıklanmıyor.
Veri konumu Bizim yönettiğimiz sunucular; kurumsal planda tamamen sizin sunucunuza kurulum. Sağlayıcının bulutu; bölge seçimi üst planlarda. Sağlayıcının bulutu; bölge seçimi üst planlarda.
Kullanım başına dış servis Yok. PostgreSQL, Valkey, Typesense, Garage, nginx — hepsi kendi altyapımızda. Var; arama, görsel ve CDN katmanları ölçülür. Var; görsel CDN ve dönüşümler ölçülür.
Render dayatması Yok. Blok render'ıcıları sıfır varsayılan stille gelir; bilinmeyen blok çökertmez, atlanır. Rich text render'ıcısı var; stil kararları sizde. Yapılandırılmış metin render'ıcısı var; stil kararları sizde.
Özellik kapatma Her özellik kapatılabilir modül; kapatmak veri silmez, plan düşmesi de silmez. Plan sınırı özelliği erişilemez kılar. Plan sınırı özelliği erişilemez kılar.
Küresel kenar ağı Tek bölge kenar cache. Küresel PoP ağımız yok. Çok bölgeli küresel CDN. Çok bölgeli küresel CDN.
Uygulama pazaryeri Yok. Entegrasyon webhook ve API ile yazılır. Geniş, olgun bir uygulama ekosistemi. Eklenti ekosistemi mevcut.
Kurumsal olgunluk Genç ürün; SSO ve resmî SLA yol haritasında. SOC 2, SSO, SLA — olgun. SSO ve SLA üst planlarda.

Küresel bir kitleye milisaniye seviyesinde servis yapmanız ve hazır entegrasyon pazaryerine ihtiyacınız varsa dürüst cevap: bugün Contentful daha olgun. Türkiye ve Avrupa'ya servis eden, çok projeli, faturasının ziyaretçi sayısıyla oynamasını istemeyen ekipler içinse corpusctl bilinçli olarak daha iyi bir takas.

SSS

Sık sorulanlar

Aradığınızı bulamadıysanız [email protected] adresine yazın.

İlk alanınızı bugün açın

Hesap açmak birkaç dakika sürüyor: e-posta, parola ve alanınızın adı yeter. Kart istemiyoruz. Taşıma konusunda yardım gerekirse yazın.