Files
radio.org.tr/keystatic.config.ts
T
Buğra Canata 8f64fb1eea Add KeyStatic CMS integration
Features added:
- KeyStatic Core and Astro integration installed
- Markdoc integration for content rendering
- keystatic.config.ts with blog post schema
- Local storage mode for content management
- Conditional loading via SKIP_KEYSTATIC env var
- Netlify build command updated to skip KeyStatic in production

KeyStatic Admin UI available at:
- Local: http://localhost:4321/keystatic
- Production: Disabled for security

Co-Authored-By: Claude <noreply@anthropic.com>
2026-01-17 19:51:49 +03:00

70 lines
1.8 KiB
TypeScript
Raw Blame History

This file contains ambiguous Unicode characters
This file contains Unicode characters that might be confused with other characters. If you think that this is intentional, you can safely ignore this warning. Use the Escape button to reveal them.
import { config, fields, collection } from '@keystatic/core';
export default config({
storage: {
kind: 'local',
},
collections: {
post: collection({
label: 'Blog Yazıları',
slugField: 'title',
path: 'src/data/post/*',
format: { contentField: 'body' },
schema: {
title: fields.slug({
name: {
label: 'Başlık',
description: 'Blog yazısının başlığı',
},
}),
date: fields.datetime({
label: 'Yayın Tarihi',
description: 'Yazının yayınlanma tarihi',
}),
author: fields.text({
label: 'Yazar',
description: 'Çağrı işareti veya yazar adı',
default: 'TA1SPH',
}),
categories: fields.array(
fields.text({
label: 'Kategori',
})
, {
label: 'Kategoriler',
description: 'Blog yazısının kategorileri',
}),
tags: fields.array(
fields.text({
label: 'Etiket',
})
, {
label: 'Etiketler',
description: 'Blog yazısının etiketleri',
}),
layout: fields.text({
label: 'Düzen',
default: 'post',
}),
image: fields.image({
label: 'Öne Çıkan Görsel',
description: 'Blog yazısı için kapak görseli',
}),
publishDate: fields.datetime({
label: 'Yayınlanma Tarihi',
description: 'Content collection için yayın tarihi',
}),
excerpt: fields.text({
label: 'Özet',
description: 'Blog yazısının kısa özeti',
multiline: true,
}),
body: fields.markdoc({
label: 'İçerik',
description: 'Blog yazısının ana içeriği',
}),
},
}),
},
});