Akademik Dergi Platformu
Birden fazla hakemli dergiyi tek çatı altında yayımlayan, OJS benzeri açık erişimli yayınevi platformu
Proje Özeti
Birden fazla hakemli dergiyi tek çatı altında yayımlayan, OJS (Open Journal Systems) benzeri bir yayınevi platformu. Her dergi platform içindeki kendi adresinde ya da kendi alan adında yayın yapıyor; yeni bir dergi panelden ekleniyor ve mimaride hiçbir şey değişmiyor.
Kullanıcıların tek bir hesabı var. Her dergide ayrı bir rolleri (dergi yöneticisi, editör, hakem) olabiliyor ve herkes her dergiye yazar olarak gönderi yapabiliyor.
Benim Rolüm
Platformun mimarisini, editoryal iş akışını, güvenlik katmanını, Crossref, ORCID ve OAI-PMH entegrasyonlarını, DergiPark taşıma aracını ve iki dilli dergi arayüzünü geliştirdim. Test paketi ve CI kurulumu ekip arkadaşımın katkısı.
Editoryal Süreç ve Yayıncılık
- Gönderi, editör ön değerlendirmesi, çift kör hakemlik, karar (kabul, düzeltme, ret), düzeltme turları, sayıya yerleştirme ve yayım
- Dergi bazında DOI öneki ve sayı bazında Crossref XML’i; dosya olarak indirilebiliyor ya da API ile otomatik gönderilebiliyor
- Yazarlar ORCID iD’lerini ORCID ile oturum açarak doğrulanmış şekilde bağlayabiliyor
- Google Scholar için Highwire Press ve Dublin Core etiketleri; makale başına APA, MLA, Chicago, Harvard, IEEE ve Vancouver atıfları, RIS ve BibTeX indirme
- Tarayıcı içi PDF görüntüleyici ve sunucuda temizlenmiş HTML tam metin
- Arşivleme için OAI-PMH 2.0 uç noktası ve LOCKSS/CLOCKSS izin sayfası
- Dergilerin DergiPark’taki arşivini metaveri ve PDF’leriyle aktaran, yeniden çalıştırılabilir bir taşıma aracı
Güvenlik
- Oturumlar veritabanında; çerezde 256 bitlik rastgele bir token, veritabanında yalnızca SHA-256 özeti tutuluyor
- Argon2id ile şifre saklama ve Have I Been Pwned üzerinden, şifreyi sunucudan çıkarmayan sızıntı kontrolü
- TOTP ile iki adımlı doğrulama; sırlar AES-256-GCM ile şifreli, tek kullanımlık kurtarma kodları var
- Ek servis gerektirmeyen, PostgreSQL üzerinde atomik sayaçlarla hız sınırlama
- İstek başına nonce kullanan katı CSP, durum değiştiren her istekte aynı-köken zorunluluğu ve HSTS
- Her sayfa ve Server Action kullanıcının yetkisini sunucuda yeniden doğruluyor; başka birinin kaynağına erişim 404 dönüyor ve hakemler yazarın kimliğini göremiyor
- Güvenlik olayları denetim kaydına yazılıyor ve bir yıl sonra otomatik siliniyor (KVKK veri minimizasyonu)
Arayüz, Dil ve Testler
- Dergi siteleri, OJS için satılan Nivo temasının sayfa düzeni örnek alınarak projeye özgü kodla tasarlandı; renkler, görseller ve metrikler panelden ayarlanıyor
- Okuyucu, yazar ve hakem arayüzü Türkçe ve İngilizce; dil seçici JavaScript olmadan da çalışıyor ve e-postalar alıcının dilinde gidiyor
- Her sayfada kanonik adres, JSON-LD (ScholarlyArticle, Periodical, PublicationIssue), alan adına göre site haritası, dergi başına Atom beslemesi ve otomatik paylaşım görselleri
- Birim testleri ve her dosyada bellek içi PostgreSQL’e (PGlite) gerçek migration’ları uygulayan entegrasyon testleri; GitHub Actions her push’ta lint, tip kontrolü, testler ve üretim derlemesini çalıştırıyor