Web
PostScript — E-dergi ve Yayın Sistemi
Bir dergi yalnızca bir web sitesi değil: yazarların, editörlerin ve çizerlerin sırayla dokunduğu bir üretim hattı. PostScript'te bu hattın yazılımını kuruyorum.
- Rolüm
- Yazılım geliştirme
- Dönem
- Eylül 2026 — devam ediyor
- Durum
- Geliştirme aşamasında, 1 Ekim 2026 yayınına hazırlanıyor
- Tür
- Web uygulaması
Genel Bakış
PostScript, herkesin erişebileceği bir e-dergi çıkarmak ve derginin etrafında sosyal bir topluluk kurmak için geliştiriliyor. Ama okuyucunun gördüğü kısım işin yarısı: derginin yayın ve ekip operasyonlarını yürüten yönetim sistemi de aynı uygulamanın içinde.
Derginin tasarımı ve kuruluşu Tuanna Demir'e ait. Ben yazılımın tamamını geliştiriyorum ve ayrıca derginin yönetiminde görev alıyorum.
Problem
Bir sayı çıkarmak tek bir kişinin işi değil. Yazı yazılıyor, okunuyor, gerekiyorsa geri gönderiliyor, onaylanıyor ve yayına alınıyor. Yaklaşık kırk kişilik bir ekibin aynı içeriğe farklı yetkilerle ve farklı aşamalarda dokunması gerekiyordu.
Bunu iki ayrı ürün olarak kurmak, yetki kurallarını iki kez yazmak demekti. Bu yüzden tek bir uygulama kurdum: okuyucunun gördüğü dergi ile ekibin çalıştığı panel aynı veritabanını, aynı yetki kurallarını ve aynı iş mantığını paylaşıyor.
- görevli katkı veren kişi
- 39
- yazar
- 29
- editör, biri Lead Editor
- 6
- yönetici
- 2
Dört hesapta çizer işareti var, ama çizerlik ayrı bir rol değil: bu dört kişiden ikisi aynı zamanda yazar. Sistemdeki hesap sayısı 39'dan fazla; yukarıdaki sayı, dergiye görevli olarak katkıda bulunan benzersiz kişi sayısı.
Sistem
Ekip içindeki yol şu: yazar yazısını panelde hazırlayıp incelemeye gönderiyor; kategori editörü okuyup onaylıyor ya da revizyon isteyerek geri gönderiyor; Lead Editor ikinci onayı veriyor; yönetici yazıyı yayın akışına alıyor. Revizyon istenen bir yazı düzeltildikten sonra aynı zincire baştan giriyor.
Bu zincir arayüzdeki bir dizi düğme değil. Bir yazının on bir durumu ve aralarında tanımlı geçişleri var; bu listede olmayan hiçbir geçiş sunucuda kabul edilmiyor. Tarayıcıda bir düğmeyi gizlemek, bir yazının yayına çıkmasını engelleyen şey değil.
-
Tek uygulama, iki yüz
Halka açık dergi ve yönetim paneli tek bir Next.js App Router uygulaması. Yetki kuralları tek yerde tanımlı olduğu için panelde geçerli olan bir kısıt, sitede de aynı şekilde geçerli.
-
İş mantığı sayfalardan ayrı
Kurallar 33 servis modülünde toplanıyor. Sayfaların işi veriyi istemek ve göstermek; bir kuralın değişmesi gerektiğinde sayfalar tek tek aranmıyor.
-
İşin çoğu sunucuda
Mimari sunucu ağırlıklı kuruldu: tarayıcıya gereğinden fazla kod ve veri gitmiyor, yetki kontrolü de istemciye güvenmek zorunda kalmıyor.
-
Yayın kapısı hak devrine bağlı
Bir yazı, imzalanmış hak devri formu olmadan ve eklenen her görselin lisans bilgisi girilmeden yayına alınamıyor. Bu kontrol arayüzde değil, durum değişikliğini yapan tek fonksiyonun içinde. Yönetici yazıyı kabul ettiğinde de iş bitmiyor: kabul bir durak değil, hak devri formunu oluşturup bir sonraki duruma geçiyor.
-
Roller veriyle birlikte tasarlandı
45 tablo ve 40 migration, rollerin ve içerik durumlarının zamanla değişeceği varsayılarak kuruldu. Yeni bir rol ya da yeni bir yayın durumu eklemek şemayı baştan yazmayı gerektirmiyor.
Teknoloji
Uygulama
- Next.js 16
- React 19
- TypeScript
- Tailwind CSS
Veri
- PostgreSQL / Neon
- Drizzle ORM
Dağıtım
- Vercel
Güvenlik
- Argon2id
- TOTP 2FA
- Zod
- Cloudflare Turnstile
- CSRF
- Rate limiting
- CSP
Oturumlar JWT ile değil, veritabanında tutuluyor. Bunun pratik karşılığı şu: bir hesabın yetkisi değiştiğinde ya da bir oturumun kapatılması gerektiğinde karar anında geçerli oluyor, jetonun süresi dolana kadar beklenmiyor. Editör ve yönetici hesaplarında iki adımlı doğrulama (TOTP) zorunlu.
Arayüz bileşenleri hazır bir kütüphaneden gelmiyor; derginin tasarımına göre elle yazıldı.
- satır TypeScript
- ~40.300
- sayfa
- 80
- servis modülü
- 33
- veritabanı tablosu
- 45
- migration
- 40
- test, 69 dosyada
- 685
Mevcut Durum
Proje 6 Eylül 2026'da başladı ve 1 Ekim 2026 yayınına hazırlanıyor. Son ölçümde 69 dosyadaki 685 birim ve entegrasyon testinin tamamı geçiyordu.
Uçtan uca (E2E) testler de var, ancak bu ölçüm sırasında çalıştırılmadı — bu yüzden "tüm testler geçiyor" demiyorum. Dergi henüz yayına açılmadığı için okuyucu, trafik veya erişim sayısı da paylaşmıyorum.