Eklenti Kataloğu Ürün Mimarisi

Bu belge, uygulama başlamadan önce önerilen plugins.webblocksui.com yüzeyi için ürün mimarisini ve MVP planlamasını kayıt altına alır. Yalnızca dokümantasyondur. Çalışma zamanı kodu, rota, migration, controller, API istemcisi, veritabanı tablosu, arayüz ekranı, dağıtım betiği, arka plan işi, sürüm etiketi veya sürüm artışı eklemez.

Amaç

plugins.webblocksui.com, WebBlocks ekosistemi için önerilen genel (public) Eklenti Kataloğu yüzeyidir. Kullanıcıların eklentileri keşfetmesine, eklenti meta verilerini anlamasına, ana ürün uyumluluğunu görmesine, sürüm geçmişini incelemesine ve güvenli elle kurulum rehberliğini izlemesine yardımcı olmalıdır.

İlk hedef; keşif, meta veriler, uyumluluk görünürlüğü ve güvenli elle ZIP kurulum rehberliğidir. Ticari bir pazar yeri olarak başlamamalı ve WebBlocks CMS, QuizTem, Herne Panel, WebBlocks Publisher veya başka herhangi bir ana üründe otomatik uzaktan eklenti kurulumu izlenimi vermemelidir.

Ürün Konumlandırması

Ürün dili üç aşamayı birbirinden ayırmalıdır:

  • Eklenti Kataloğu: eklentilere göz atma, arama ve keşif; meta verileri, uyumluluğu, sürüm notlarını, ekran görüntülerini, dokümantasyonu ve indirme bağlantılarını okuma.
  • Eklenti Mağazası: daha sonra, katalog meta verilerinden ana ürünlere güvenilir kurulum/güncelleme entegrasyonu.
  • Pazar Yeri: satıcılar, hesaplar, lisanslama, ödemeler, onaylar, puanlamalar ve ücretli eklenti dağıtımı içeren gelecekteki ticari katman.

Yakın vadeli ürün Pazar Yeri değil, Eklenti Kataloğu olarak adlandırılmalıdır. Pazar yeri dili, ertelenmiş ticari özellikler için ayrılmış kalmalıdır.

Aday Uygulama Seçenekleri

Ayrı Bir Laravel Uygulaması

Artıları:

  • temiz ürün sınırı
  • bağımsız yol haritası
  • uzun vadede en kolay API ve katalog sahipliği

Eksileri:

  • daha fazla kurulum ve operasyon işi
  • ayrı içerik yönetimi, yönetim paneli, dağıtım ve bakım gereksinimleri

WebBlocks Publisher Yeteneği

Artıları:

  • güncelleme yayımlama kavramlarını yeniden kullanır
  • artefakt, sağlama toplamı (checksum), sürüm meta verisi ve manifest desenlerini yeniden kullanabilir

Eksileri:

  • WebBlocks Publisher'ı fazla genişletme riski taşır
  • eklenti kataloğu gereksinimleri, ürün güncellemesi yayımlamadan farklıdır
  • katalog keşfi, uyumluluk matrisleri ve genel eklenti sayfaları Publisher'ı temel ürün rolünden uzaklaştırabilir

WebBlocks CMS Tabanlı Site ve Katalog Eklentisi

Artıları:

  • WebBlocks CMS yeteneklerini sergiler
  • içerik sayfalarının yönetimi kolaydır
  • Eklenti Kataloğu, eklenti sistemini bizzat kullanarak sınayabilir (dogfooding)

Eksileri:

  • bir katalog eklentisi gerektirir
  • genel içerik yönetimi ile artefakt/katalog otoritesi arasında dikkatli bir ayrım gerekir
  • CMS içerik düzenlemesinin, çalıştırılabilir artefakt güvenliğinin otoritesi haline gelmesinden kaçınılmalıdır

Hibrit Model

Hibrit model; genel pazarlama ve içerik sayfalarını WebBlocks CMS'ten sunarken, katalog API'sini ve artefakt meta verilerini ayrı bir katalog servisinden veya Publisher türevi bir arka uçtan sunar.

Bu, uzun vadede en pratik yön olabilir; ancak bir uygulama taahhüdü değil, bir yön olarak kalır.

Önerilen Yön

plugins.webblocksui.com yüzeyini temiz bir sınıra sahip bir ekosistem ürün yüzeyi olarak belgeleyin. Keşif, meta veriler, uyumluluk görünürlüğü, sürüm notları, sağlama toplamları, dokümantasyon ve elle indirme rehberliğine odaklanan katalog öncelikli bir MVP ile başlayın.

Uygulama, ayrı bir Laravel uygulaması veya WebBlocks CMS tabanlı bir katalog eklentisi olarak başlayabilir; ancak veri sözleşmesi tek bir arayüz uygulamasına bağımlı olmamalıdır. WebBlocks Publisher kavramları — özellikle sürüm meta verisi ve artefakt doğrulama fikirleri — Eklenti Kataloğu'nun Publisher içinde yaşaması gerektiği varsayılmadan yeniden kullanılabilir kalmalıdır.

Çekirdek Alan Modeli

Aşağıdaki kavramlar yalnızca planlama düzeyindedir. Geçerli depoda veritabanı tablosu, API, model, migration veya yönetim ekranı anlamına gelmez.

Eklenti

  • tanıtıcı (handle)
  • etiket (label)
  • özet
  • açıklama
  • satıcı/yazar
  • web sitesi URL'si
  • dokümantasyon URL'si
  • destek URL'si
  • lisans türü
  • kategoriler
  • etiketler (tag)
  • durum: taslak, listede, listelenmemiş, kullanımdan kaldırılmış, askıya alınmış
  • ilk yayımlanma tarihi
  • en son sürüm tarihi

Satıcı / Yazar

  • ad
  • slug
  • web sitesi
  • destek iletişimi
  • doğrulanmışlık durumu
  • genel profil sayfası
  • gelecekteki ticari uygunluk, ertelendi

Ana Ürün

  • ürün anahtarı, örneğin webblocks-cms, quiztem, herne-panel veya webblocks-publisher
  • ürün etiketi
  • desteklenen sürüm aralıkları
  • katalog görünürlük kuralları

Eklenti Sürümü

  • eklenti tanıtıcısı
  • sürüm
  • kanal: stable, beta, alpha, dev
  • sürüm tarihi
  • sürüm notları
  • uyumluluk matrisi
  • geçerli olduğunda gerekli PHP/Laravel sürümü
  • artefakt URL'si
  • sağlama toplamı
  • gelecekteki imza meta verileri
  • migration notları
  • uyumluluğu bozan değişiklik notları
  • güvenlik notları
  • kullanımdan kaldırma notları

Artefakt

  • depolama yolu veya URL
  • sağlama toplamı
  • boyut
  • MIME/tür
  • paket biçimi
  • manifest meta verileri
  • doğrulama durumu
  • tarama durumu
  • yayımlanma durumu

Uyumluluk Matrisi

  • desteklenen ana ürünler
  • gerekli ana ürün sürümleri
  • uyumsuz ana ürün sürümleri
  • ilgili olduğunda PHP/Laravel kısıtları
  • gerekli uzantılar (extension)
  • çakışan eklenti tanıtıcıları
  • ileride destek onaylanırsa gerekli eklenti bağımlılıkları

Güvenlik Duyurusu

  • eklenti tanıtıcısı
  • etkilenen sürümler
  • önem derecesi
  • durum
  • düzeltilmiş sürüm
  • genel özet
  • önerilen operatör eylemi

Genel Web Sitesi Yüzeyi

Önerilen plugins.webblocksui.com yüzeyi için gelecekteki genel sayfalar şunları içerebilir:

  • Ana sayfa
  • Eklenti listesi
  • Kategori sayfaları
  • Arama sonuçları
  • Eklenti detay sayfası
  • Sürüm geçmişi sayfası
  • Satıcı profil sayfası
  • Ana ürün uyumluluk sayfaları
  • Dokümantasyon / kurulum kılavuzu sayfaları
  • Güvenlik duyuruları sayfası
  • Kullanımdan kaldırılan / kaldırılmış eklenti rehberliği
  • Gelecekteki pazar yeri sayfaları, açıkça ertelendi

Eklenti detay sayfaları şunları içermelidir:

  • eklenti adı
  • özet
  • ekran görüntüleri
  • desteklenen ana ürünler
  • en son uyumlu sürüm
  • gerekli ana ürün sürümleri
  • sürüm notları
  • istenen izinler
  • bildirilen migration'lar
  • bildirilen rotalar, ayarlar, komutlar ve varlıklar (asset)
  • kurulum yöntemi
  • indirme ve sağlama toplamı bilgileri
  • güvenlik/kullanımdan kaldırma durumu
  • destek ve dokümantasyon bağlantıları

Operatör/Yönetici Yüzeyi

Gelecekteki katalog operatör ekranları şunları içerebilir:

  • Eklentiler
  • Satıcılar
  • Sürümler
  • Artefaktlar
  • Uyumluluk
  • Güvenlik Duyuruları
  • Kategoriler/Etiketler
  • İnceleme Kuyruğu, ertelendi
  • Ticari/Lisanslama, ertelendi

Bunlar katalog/yönetim planlama kavramlarıdır, CMS yönetim paneli uygulama görevleri değildir.

API Yönü

Gelecekteki salt okunur API uç noktaları şunları içerebilir:

  • GET /api/plugins
  • GET /api/plugins/{handle}
  • GET /api/plugins/{handle}/releases
  • GET /api/plugins/{handle}/latest?host_product=webblocks-cms&version=...
  • GET /api/host-products
  • GET /api/security-advisories
  • GET /api/catalog/index

V1 API'si ana ürünler için salt okunur olmalıdır. API yanıtları kendi başına asla uzaktan kurulum, eklenti etkinleştirme, migration çalıştırma, güncelleme uygulama, keyfî Composer kurulumu veya çalıştırılabilir davranış tetiklememelidir.

Gelecekteki yayımcı/operatör uç noktaları ayrıdır ve ertelenmiştir:

  • eklenti sürümü yayımlama
  • artefakt yükleme
  • listelemeyi onaylama
  • listelemeyi askıya alma
  • duyuru yayımlama

CMS / Ana Ürün Entegrasyon Yönü

WebBlocks CMS ve diğer ana ürünler, Eklenti Kataloğu'nu şu amaçlarla kullanabilir:

  • ana ürün yönetim panelinden kataloğa göz atma
  • indirme/kurulum öncesinde eklenti uyumluluğunu gösterme
  • elle ZIP indirmeye bağlantı verme
  • kurulu eklenti sürümlerini katalog sürümleriyle karşılaştırma
  • kurulu eklentiler için güvenlik/kullanımdan kaldırma uyarılarını gösterme
  • yalnızca ana ürünler güvenilir artefakt meta verilerini yeniden denetlediğinde, sağlama toplamlarını doğruladığında, paketleri doğruladığında ve açık operatör eylemleri gerektirdiğinde kontrollü kurulum/güncelleme akışlarını destekleme

Katalogda gezinme, kurulu eklenti yönetiminin çevrimiçi olmasını gerektirmemelidir. Kurulu eklenti yönetimi, katalog erişilebilir olmadan da çalışmalıdır. Ana ürünler katalog meta verilerini savunmacı biçimde önbelleğe almalı ve uzak meta veriler çalıştırılabilir davranış olarak güvenilir sayılmamalıdır.

Yayımlama Akışı Yönü

Gelecekteki bakımcı/operatör akışı şunları içerebilir:

  • eklenti artefaktını yerel olarak hazırlama
  • eklenti manifestini doğrulama
  • paket yapısını doğrulama
  • sağlama toplamını hesaplama
  • artefaktı ve meta verileri yükleme
  • kataloğun uyumluluğu ve artefakt güvenliğini doğrulaması
  • sürümün yalnızca açık operatör onayından veya güvenilir birinci taraf yayımlama akışından sonra listelenmesi

Bu, WebBlocks Publisher/güncelleme meta verisi fikirlerine benzer; ancak eklenti kataloğu yayımlama, ileride bir karar bunları birleştirmediği sürece ayrı bir yetenek olarak kalmalıdır.

MVP Kapsamı

Pratik bir ilk MVP şunları içermelidir:

  • statik veya katalog tarafından yönetilen eklenti kayıtları
  • genel eklenti listesi ve detay sayfaları
  • eklenti sürüm meta verileri
  • uyumluluk matrisi
  • elle indirme bağlantıları
  • görüntülenen sağlama toplamları
  • dokümantasyon bağlantıları
  • CMS tarafında otomatik uzaktan kurulum yok
  • ücretli pazar yeri yok
  • lisanslama yok
  • üçüncü taraf self servis yayımlama yok
  • otomatik güncelleme uygulama yok

Hedef Dışı Konular

Bu planlama aşaması şunları içermez:

  • bu görevde uygulama
  • canlı üretim dağıtımı
  • otomatik uzaktan eklenti kurulumu
  • otomatik eklenti etkinleştirme
  • otomatik eklenti migration çalıştırma
  • otomatik eklenti güncellemesi uygulama
  • keyfî Composer kurulumu
  • ücretli pazar yeri
  • lisans sunucusu
  • satıcı self servis portalı
  • puanlamalar/yorumlar
  • üretim artefaktı yayımlama otomasyonu
  • canlı site doğrulaması

Açık Sorular

  • plugins.webblocksui.com ayrı bir Laravel uygulaması olarak mı yoksa CMS tabanlı bir katalog eklentisi olarak mı başlamalı?
  • Eklenti artefaktı yayımlamanın sahibi WebBlocks Publisher mı olmalı, yoksa Eklenti Kataloğu'nun kendi yayımlama akışı mı olmalı?
  • Birinci taraf ve üçüncü taraf eklentilerin onay akışları farklı mı olmalı?
  • Eklenti imzaları nasıl ele alınmalı?
  • Ticari lisanslama, katalog sözleşmesini değiştirmeden daha sonra nasıl devreye alınmalı?
  • Özel/dahili eklentiler nasıl temsil edilmeli?
  • Birden çok ana ürünü destekleyen eklentiler, ana ürün başına sağlayıcıları ve uyumluluğu nasıl bildirmeli?