İçerik Yönetimi
Koleksiyonlar, girişler, yerel ayarlar ve sürümler içeren headless bir CMS. İçeriği Content panelinden veya SDK aracılığıyla yönetin.
Proyecta, tam özellikli bir headless CMS sunar. Şema-öncelikli bir yapıya sahiptir: önce koleksiyonlar (yapılandırılmış içerik türleri) tanımlarsın, ardından her koleksiyonun alanlarına uyan girişler oluşturursun. Girişler yerelleştirilebilir ve sürümler halinde gruplandırılabilir.
Content paneli
Section titled “Content paneli”İçerik, SDK aracılığıyla veya AI’ya sorarak yönetilebilir. Content API’nin altı kaynak türü vardır:
| Sekme / Kaynak | Ne işe yarar |
|---|---|
| Collections | İçerik şemalarını tanımla ve yönet (örn. “Blog Yazısı”, “SSS”, “Ürün Spesifikasyonu”) |
| Fields | Bir koleksiyon içindeki türlendirilmiş alanlar (Collections’ın alt kaynağı olarak yönetilir) |
| Entries | Bir koleksiyon içindeki girişleri görüntüle, oluştur, düzenle, yayınla ve sil |
| Locales | Çevrilmiş içerik için dil/bölge yerel ayarları ekle ve yönet |
| Releases | Birlikte yayına girecek (veya yayından kaldırılacak) girişleri gruplandır; releases.publish() ile manuel olarak yayınla |
| Assets | Medya dosyalarını (görseller, videolar, PDF’ler) yükle ve yönet; girişlerden referans alınabilir |
Collections sekmesinde bir koleksiyona tıklayarak o koleksiyonun girişlerine geçebilirsin. Entries sekmesi, tekil içerik öğelerini oluşturmana, düzenlemene, yayınlamanı ve silmene olanak tanır.
Her şeyi SDK (proyecta.content) aracılığıyla programatik olarak da yönetebilirsin.
Kavramlar
Section titled “Kavramlar”| Kavram | Ne anlama gelir |
|---|---|
| Collection | Bir şema — belirli bir içerik türünün yapısı (örn. “Blog Yazısı”, “SSS”, “Ürün Spesifikasyonu”) |
| Field | Bir koleksiyondaki türlendirilmiş alan (örn. title: string, body: rich_text, coverImage: asset) |
| Entry | Bir koleksiyonun tek bir örneği (tek bir blog yazısı, tek bir SSS maddesi) |
| Asset | Girişlerden referans alınabilen, yüklenmiş bir medya dosyası |
| Locale | İçeriğin çevrildiği bir dil/bölge |
| Release | Aynı anda yayına girecek (veya yayından kaldırılacak) girişler grubu |
Hızlı başlangıç
Section titled “Hızlı başlangıç”import Proyecta from '@proyecta-ai/sdk';
const proyecta = new Proyecta({ apiKey: process.env.PROYECTA_API_KEY });
// 1. Define a collectionconst blog = await proyecta.content.collections.create({ api_id: 'blogPost', name: 'Blog Post', // fields are added via collections.fields.create()});
// 2. Create an entryconst post = await proyecta.content.entries.create({ collection_id: blog.id, data: { title: 'Hello, world', body: 'My very first post.', },});
// 3. Publish itawait proyecta.content.entries.publish({ entryId: post.id });Koleksiyonlar
Section titled “Koleksiyonlar”// Browse collectionsfor await (const collection of proyecta.content.collections.list()) { console.log(collection.name);}
// Add or remove fields on a collectionawait proyecta.content.collections.fields.create(blog.id, { /* field definition */});await proyecta.content.collections.fields.delete(blog.id, fieldId);Girişler
Section titled “Girişler”Girişler, gerçek içerik satırlarıdır. Her giriş bir koleksiyona aittir ve o koleksiyonun alanlarıyla eşleşen verileri taşır.
// Browse entries (pass the collection's api_id, not its numeric id)for await (const entry of proyecta.content.entries.list({ collection: 'blogPost' })) { console.log(entry);}
// Update an entryawait proyecta.content.entries.update(post.id, { data: { title: 'Updated title' } });
// Publish an entryawait proyecta.content.entries.publish({ entryId: post.id });
// Delete an entryawait proyecta.content.entries.delete(post.id);Varlıklar (Assets)
Section titled “Varlıklar (Assets)”Varlık yüklemeleri birinci sınıf bir özelliktir — girişlerine görsel, video veya PDF eklemek için kullanabilirsin:
// Browse assetsfor await (const asset of proyecta.content.assets.list()) { console.log(asset);}
// Upload, update, or delete via assets.create / assets.update / assets.deleteSohbet odaklı dosya yüklemeleri (builder’a sürükle-bırak) için bkz. Dosyalar ve Medya.
Yerelleştirme
Section titled “Yerelleştirme”İçerik birden fazla yerel ayara çevrilebilir. Her yerel ayar, proyecta.content.locales aracılığıyla yönetilen bir kayıttır:
await proyecta.content.locales.create({ /* code, name, etc. */});
for await (const locale of proyecta.content.locales.list()) { console.log(locale);}Girişleri getirirken belirli bir yerel ayarın çevirisini talep edebilirsin. Daha geniş i18n tablosu için bkz. Uluslararasılaştırma.
Sürümler
Section titled “Sürümler”Bir sürüm, aynı anda yayına giren (veya yayından kaldırılan) girişler paketidir. Bu sayede koordineli bir içerik lansmanını — bir pazarlama duyurusu, yeni bir ürün sayfası, bir SSS güncellemesi — hazırlayıp her şeyin atomik olarak devreye girmesini sağlayabilirsin.
Not: Otomatik zamanlı yayınlama henüz uygulanmamıştır.
scheduled_attarihi belirlenmiş sürümlerscheduleddurumuna geçer ancakreleases.publish()aracılığıyla manuel olarak yayınlanması gerekir. Belirtilen zamanda otomatik yayınlama yakında geliyor.
// Create a release (optionally with a target date)const release = await proyecta.content.releases.create({ name: 'Monday launch', scheduled_at: '2024-01-08T09:00:00Z',});
// Manually publish a release when readyawait proyecta.content.releases.publish({ releaseId: release.id });
// Browse releasesfor await (const r of proyecta.content.releases.list()) { console.log(r);}Bir sürümün zamanlamasını değiştirmek için mevcut sürümü silip yeniden oluşturman gerekir — güncelleme endpoint’i yoktur.
Yaygın kalıplar (AI’a bağlamasını bırak)
Section titled “Yaygın kalıplar (AI’a bağlamasını bırak)”"Proyecta Content API kullanarak bir blog oluştur. 'Blog Post' koleksiyonu şu alanlarla: title, slug, excerpt, body (rich text), coverImage (asset), author. /blog ve /blog/[slug] adreslerinde herkese açık rotalar.""Proyecta Content'te bir SSS koleksiyonu oluştur. SSS ekleyip düzenleyebileceğim bir yönetim sayfası ve herkese açık bir /faq sayfası yap.""Proyecta Content kullanarak İngilizce ve İspanyolca yerel ayarlarıyla çok dilli bir açılış sayfası kur.""Üç blog yazısı içeren bir sürüm oluştur ve hazır olduğunda manuel olarak yayınla."
Content mi Database mi kullanmalıyım?
Section titled “Content mi Database mi kullanmalıyım?”| Kullanım senaryosu | Bunu kullan |
|---|---|
| Editoryal içerik (yazılar, SSS’ler, pazarlama metinleri) — yayınlama/taslak durumları, zamanlama ve yerelleştirme gerektirir | Content API |
| Uygulama verisi (kullanıcılar, siparişler, satır kalemleri) — sorgu hızı, işlemler ve gerçek zamanlılık gerektirir | Database |
| Koddaki statik varlıklar | Projendeki public/ dizini |
| Kullanıcı tarafından yüklenen dosyalar | Dosyalar ve Medya |
Yakında geliyor
Section titled “Yakında geliyor”- Zengin metin giriş editörü — Content panelinde
rich_textalanları için tam WYSIWYG düzenleme - İçerik değişikliklerinin uygulamana karşı canlı önizlemesi
- İçerik rolleri — editör izinlerini geliştirici izinlerinden ayırma