Kaydırma animasyonlarıyla gezilen kitap tanıtım sitesi, yönetim paneli ve n8n destekli kitap ekleme otomasyonu.
- Node.js + Express
- Multer ile kapak yükleme
- Vanilla HTML, CSS ve JavaScript
- Kitap ve yazar verileri için JSON dosyaları
npm install
ADMIN_KEY=guclu-bir-sifre npm start- Site: http://localhost:3000
- Yönetim paneli: http://localhost:3000/admin.html
ADMIN_KEY zorunludur. Ayarlanmazsa site açılır ancak yönetim işlemleri güvenlik için
devre dışı kalır. Kod içinde varsayılan veya gömülü admin şifresi yoktur.
İsteğe bağlı GOOGLE_BOOKS_KEY, Google Books'un anahtarsız kota sınırına takılmasını
önler. Anahtar yoksa veya Google sonuç vermezse kapak araması Open Library'ye düşer.
Windows CMD:
set "ADMIN_KEY=guclu-bir-sifre"
npm startnpm testnpm test deterministik kontrolleri tek komutta çalıştırır: node --check server.js,
node scripts/test-parse.js, bash scripts/orchestration-check.sh ve
bash scripts/agent-protocol-check.sh. İlk başarısız kontrolde durur ve sıfırdan farklı
çıkış kodu döner. Sunucu başlatmaz, ağ erişimi istemez.
- + Yeni Kitap ile kitap eklenir; mevcut kitaplar düzenlenebilir, silinebilir ve sıralanabilir.
- Yazar bilgileri Yazarlar sekmesinden ortak bir dosya olarak yönetilir.
- Kapak görseli yüklenebilir veya Google Books/Open Library üzerinden aranabilir.
- Kapak yoksa renk paleti ve yazı dizilimiyle tipografik CSS kapak gösterilir.
- Metinde
*vurgu*kullanımı güvenli biçimde<em>vurgusuna dönüştürülür. - Özet ve biyografi paragrafları boş satırlarla ayrılır.
- Künye ve eser satırları
Değer|Etiketbiçimindedir.
- Kitaplar:
data/books.json - Yazarlar:
data/authors.json - Yüklenen kapaklar:
uploads/ - Kullanıcı arayüzü:
public/index.html - Yönetim paneli:
public/admin.html - Sunucu/API:
server.js
Canlı sunucudaki data/ ve uploads/ üretim verisidir. Yerel kopyalar yalnız geliştirme
verisi sayılır ve canlıyla eşit olmak zorunda değildir. Kod dağıtırken bu iki klasörü
sunucuya kopyalama; canlı kitap, yazar ve kapak verilerini ezme.
- Site: https://kitaprafi.osmanevski.com
- n8n: https://n8n.osmanevski.com
- Sunucu uygulaması: PM2 süreci
kitaprafi, port3000 - Reverse proxy ve HTTPS: Caddy
Windows sunucuda ilk PM2 kurulumu:
set "ADMIN_KEY=guclu-bir-sifre"
pm2 start server.js --name kitaprafi
pm2 saveOrtam değişkeni kalıcı olarak değiştirildikten sonra:
pm2 restart kitaprafi --update-env
pm2 saveKod güncellemesinde yalnız değişen kod/statik dosyaları gönder ve ardından gerekirse
pm2 restart kitaprafi çalıştır.
n8n-workflow.json, OpenRouter üzerinden google/gemini-3-flash-preview modelini kullanır
ve üretilen kitabı korumalı /api/books/ingest endpoint'ine gönderir. Kurulum ve kullanım
ayrıntıları için OTOMASYON.md dosyasına bak.
Kaynak public/vt/; canlı ana adres https://osmanevski.com/kitaprafi/.
/kitaprafi/vt/ aynı görünümü açar. Klasik liste /kitaprafi/klasik/, eski sergi
/kitaprafi/sergi altında korunur. Liste public/books.json verisini kullanır;
serginin data/books.json veya /api/books verisi değildir.
Canlı Caddy terminal dosyalarını /opt/kitaprafi/public/vt/ içinden doğrudan sunar.
Yalnız değişen public/vt/ dosyalarını aynı sunucu dizinine kopyala; konteyneri
ve canlı veri dosyalarını değiştirme. Ana site deposundaki katalog dosyaları artık
kaynak değildir. Ortak fontlar, favicon ve duvar kâğıdı ana siteden yüklenir.
Yerel önizlemede /kitaprafi/vt/* yollarını bu dizine, /kitaprafi/books.json
yolunu public/books.json dosyasına yönlendir. Normal sergi geliştirme akışı aynıdır.
Kontrol: node scripts/test-terminal-catalog.mjs, node --check public/vt/app.js, npm test.