Schema Pipeline: TypeScript'ten CMS Formuna

Organism şemasındaki bir alan tanımının otomatik CMS formuna dönüşmesinin adım adım açıklaması.

Schema pipeline akış diyagramı

AstroForge'un schema pipeline'ı, geliştiricilerin CMS form konfigürasyonuna zaman harcamak zorunda kalmamasını sağlar. Fikir basit: organism'ı TypeScript'te tanımla, CMS formları kendiliğinden üretilsin.

Kaynak: organism-schemas.ts

src/lib/config/organism-schemas.ts, her organism için alan tanımlarını içerir. Örnek bir tanım:

Hero: {
  label: 'Hero Bölümü',
  fields: [
    { key: 'badge',       type: 'text',     label: 'Üst Etiket' },
    { key: 'headline',    type: 'text',     label: 'Başlık' },
    { key: 'items', type: 'repeater', label: 'Öğeler',
      fields: [
        { key: 'title', type: 'text', label: 'Başlık' }
      ]
    }
  ]
}

Build Sırasında Ne Olur?

Astro integration hook'u olarak çalışan schema-integration.ts, her build başladığında organism-schemas.ts ve pages.config.ts'i okur. Her sayfa için src/content/schema/page-*.schema.json dosyalarını üretir. Bu dosyalar CMS'in form arayüzünü oluşturmak için kullandığı şema dosyalarıdır.

Önemli: Schema Değişikliği Sonrası Workflow

Schema dosyaları build sırasında üretilir ama Git'e otomatik commit edilmez. CMS bu dosyaları doğrudan GitHub'dan okur. Bu nedenle schema değişikliğinin CMS'e yansıması için şu adımlar gereklidir:

  1. npm run build — schema dosyaları üretilir
  2. git add src/content/schema/ cms.config.json
  3. git commit && git push

Bu adım atlanırsa CMS eski schema'yı görür ve yeni alanlar görünmez.

Collection Tab Yapısı

Collection organism'ları için schema pipeline, otomatik olarak üç tab üretir: General (title, slug, excerpt, body, thumbnail + organism scalar'ları), SEO (meta alanları) ve organism-özel set/repeater alanları için ek tab'lar. Bu sıra her collection için sabittir.