Claude ile JSON Tabanlı CMS Yapma Promptu
Sen; Jamstack mimarileri, dosya tabanlı (file-based) sistemler, Node.js dosya akışları (fs module) ve JSON Şemaları konusunda uzmanlaşmış Kıdemli bir Yazılım Mimarı ve Full-Stack Geliştiricisin. Seninle birlikte, [BURAYA PROJENİN AMACINI YAZIN. Örn: Kişisel bir blog sitesi / Küçük ölçekli bir teknoloji portalı] için geleneksel bir veritabanı (SQL/NoSQL) KULLANMAYAN, tamamen JSON dosyaları tabanlı çalışan hafif ve modern bir CMS (İçerik Yönetim Sistemi) geliştireceğiz. Sistem, içerikleri sunucudaki (veya bir bulut depolama alanındaki) `.json` uzantılı dosyalarda saklayacak, frontend tarafı ise bu verileri okuyarak sayfaları dinamik veya statik olarak render edecek. Lütfen bu JSON tabanlı CMS projesi için bana şu başlıklar altında detaylı bir teknik mimari ve kodlama planı hazırla: 1. JSON Veri Yapısı ve Şema (JSON Schema) Tasarımı: - Sistemdeki içerikler için klasör ve dosya yapısı nasıl olmalı? (Örn: `settings.json`, `posts/` klasörü altında `post-1.json` vb.) - Tip güvenliği (Type Safety) ve veri doğrulaması (validation) için JSON Şemaları (Zod veya JSON Schema standardı ile) nasıl kurgulanmalı? Örnek bir blog yazısı ve kategori şeması göster. 2. Dosya Okuma/Yazma Mekanizması ve Eşzamanlılık (Concurrency): - Node.js (veya kullandığın backend dili) ortamında JSON dosyalarını okurken ve yazarken oluşabilecek "aynı anda yazma çakışmalarını" (Race Conditions / File Locking) engellemek için en güvenli yaklaşım nedir? - Dosya yazma işlemlerinde veri kaybını önlemek için "Atomik Yazma (Atomic Write)" konseptini bu projede nasıl uygularız? 3. CRUD Operasyonları ve API Yönetimi: - JSON dosyaları üzerinde Ekleme (Create), Okuma (Read), Güncelleme (Update) ve Silme (Delete) işlemlerini yapacak temel servis fonksiyonlarının (Helper Functions) mimarisini kurgula. - Performanslı çalışan bir Listeleme ve Filtreleme (Örn: Aktif olan yazıları getir, tarihe göre sırala) algoritması nasıl olmalı? (Tüm dosyaları belleğe (RAM) yüklemeden optimize bir şekilde nasıl yaparız?) 4. Admin Arayüzü ile JSON Entegrasyonu: - İçerik üreticilerinin bu JSON dosyalarını bozmadan düzenleyebilmesi için backend'den gelen JSON şemasını frontend'de dinamik formlara dönüştüren (Form Generation) mimari nasıl kurgulanmalı? 5. Önbelleğe Alma (Caching) ve Performans: - Her sayfa isteğinde diske gidip JSON okumak performans kaybı yaratacaktır. Bellek içi (In-Memory) verimli bir caching mekanizmasını harici bir araç (Redis vb.) kullanmadan, uygulamanın kendi içinde nasıl çözeriz? 6. MVP Geliştirme Yol Haritası ve Klasör Yapısı: - Projenin backend ve frontend katmanlarını içeren temiz bir klasör yapısı öner ve bana 4 adımdan oluşan mantıklı bir kodlama sırası sun. Lütfen yanıtını olabildiğince performans odaklı, veri güvenliğini ön planda tutan ve doğrudan kod yazımına geçebileceğim netlikte yapılandır. Hazır olduğunda başlayalım!
Açıklama
Claude'u kıdemli bir Yazılım Mimarı ve Dosya Sistemi (File-System) Uzmanına dönüştürerek; veritabanı yerine tamamen yerel (local) veya bulut tabanlı JSON dosyalarını kullanan, hafif, hızlı ve taşınabilir bir CMS mimarisi inşa etmesini sağlar.
Claude Özel Bilgileri
Ne işe yarar?
Geleneksel veritabanı sunucularına ihtiyaç duymadan, web sitesinin tüm içeriklerini (sayfalar, blog yazıları, site ayarları) JSON dosyalarında saklayan, bu dosyaları okuyan (Read), yazan (Write) ve güncelleyen (Update) güvenli ve performanslı bir sistem mimarisi kurgular.
Kullanım amacı
Sunucu ve veritabanı maliyetlerini sıfıra indiren statik veya dinamik web projeleri geliştirmek. İçeriklerin sürüm kontrolünü (Git/GitHub üzerinden) kolayca yapabilmek. Jamstack mimarisine uygun, taşınması ve yedeklenmesi sadece bir dosyadan ibaret olan esnek web siteleri kurmak.
ÖZET
Bu prompt, JSON tabanlı sistemlerdeki en büyük riskler olan "aynı anda dosyaya yazma çakışmaları (race conditions)" ve "büyük JSON dosyalarında performans kayıpları" gibi teknik sorunları daha tasarım aşamasında çözmeyi hedefler. [Köşeli Parantez] içindeki alanları projenize göre özelleştirerek Claude'dan eksiksiz bir mimari alabilirsiniz.
Yorumlar yükleniyor...