BSE Shop geliştirme platformu
Temayı, eklentiyi ve API istemcisini gerçek sözleşmeyle geliştirin.
Bu portal BSE Shop çekirdeğinin yayımlanmış v1 yüzeyini anlatır. Örnekler PHP 8.3, MariaDB 10.3, manifest v1 ve API v1 ile eşleşir.
Çekirdek0.1.x
PHP8.3
VeritabanıMariaDB 10.3+
Template contract1
01Kurulum ve yükseltme
Kaynak kurulumu ile müşteri ortamı hazırlığını birbirinden ayırın.
Yerel kaynak kurulumu
- PHP 8.3, Composer 2 ve gerekli PHP eklentilerini hazırlayın.
- Bağımlılıkları kilit dosyasından kurun.
- Web kökü olarak yalnız
public/ dizinini kullanın.
- Çalışma ayarını kaynak ve web kökü dışında, sahibi tarafından okunabilen bir dosyada tutun.
composer install
export BSE_CONFIG_FILE=/private/runtime.json
php bin/commerce config:check
php bin/commerce system:check
php bin/commerce migrate:status
İlk kurulum sırası
DB ve Redis hesabı altyapı katmanında önceden hazırlanır. Uygulama kullanıcı ya da servis hesabı oluşturmaz.
php bin/commerce system:check
php bin/commerce migrate:run
export BSE_ONBOARDING_INPUT_FILE=/private/admin.json
php bin/commerce admin:bootstrap
Yönetici girdisi tek kullanımlıdır. Parolayı komut satırına, kaynak koduna veya web köküne koymayın.
Güvenli yükseltme akışı
1 · İmzayı doğrula2 · Uyumluluğu denetle3 · Staging alanına aç4 · Migration planını kontrol et5 · Atomik etkinleştir
Paket ZIP'i 16 MiB, açılmış içerik 64 MiB ve 2.048 girdi sınırındadır. İmza, checksum, çekirdek/PHP/MariaDB uyumu geçmeden paket kodu çalıştırılmaz. Yönetim panelindeki paket ve güncelleme akışını kullanın; CLI yaşam döngüsü yalnız güvenilir worker/operasyon bağlamı içindir.
02Tema SDK v1
Starter temadan ayrı bir paket üretin; çekirdeği değiştirmeyin.
Beş komutta çalışan tema
php bin/commerce theme:create acme-store
php bin/commerce theme:validate extensions/themes/acme-store
php bin/commerce theme:hooks --format=md
php bin/commerce theme:templates --format=md
php bin/commerce theme:test extensions/themes/acme-store
theme:create, starter paketini kopyalar; slug, ad ve text domain alanlarını günceller. Çekirdek dosyalarını değiştirmez.
Paketleme
export BSE_THEME_SIGNING_KEY_FILE=/private/theme-key.json
php bin/commerce theme:package extensions/themes/acme-store
Anahtar dosyası web kökü dışındadır ve yalnız sahibi okuyabilir. Paket checksums.json ile signature.ed25519 üretir; anahtar değeri çıktıya yazılmaz.
Manifesttheme.json, şema v1 ve template contract 1.
Sunum sınırıTema SQL, container, uzak istek veya ticaret hesabı çalıştırmaz.
HookYalnız yayımlanmış sunum hookları; fiyat, stok ve yetki sonucu değiştirilemez.
İzin verilen v1 hookları
| Hook | Tür | Sözleşme | Hata politikası |
storefront.body.classes.v1 | filter | Güvenli CSS class listesi | fail open + güvenli kayıt |
storefront.product.summary.after.v1 | action | ProductSummaryAfterV1 | fail open + güvenli kayıt |
03Eklenti SDK v1
Manifestten yetkiye, admin katkısından zamanlanmış işe kadar gerçek örnek yapı.
Örnek paket düzeni
bse-example-tools/
├── plugin.json
├── composer.json
├── src/Plugin.php
├── src/ServiceProvider.php
├── src/Admin/
├── src/Jobs/
└── translations/
Kaynak örnek navigation, settings, widget, detail tab, list column, filter, bulk action, admin route, job ve schedule sözleşmelerini birlikte gösterir.
İsim ve yetki kuralları
- Slug: küçük harf, sayı ve tek tireli bölümler.
- Yetki:
<slug>.<kaynak>.<eylem>.
- Admin route:
/admin/extensions/<slug>/....
- API route:
/api/v1/extensions/<slug>/....
- Job, schedule, route ve contribution adları benzersiz olmalıdır.
Kaynak örnek doğrudan production paketi değildir. Yayın hattı checksum, Ed25519 imza ve dış metadata üretmeden kurulamaz.
04REST API v1
OpenAPI 3.0.3 sözleşmesi, canonical string tutarlar ve typed problem yanıtları.
İlk istek
curl -sS https://dev.bseshop.com.tr/api/v1/bootstrap \
-H 'Accept-Language: tr-TR' \
-H 'X-Store-Currency: TRY'
Public ID değerleri ULID, para minor tutarları ve dört basamaklı miktarlar JSON string olarak taşınır. Para alanını float'a çevirmeyin.
Sözleşme dosyaları
05Uyumluluk ve kullanımdan kaldırma
Sürüm aralıklarını paketin manifestinde açıkça tanımlayın.
| Yüzey | Güncel sözleşme | Uyumluluk kuralı |
| Çekirdek | 0.1.x | Manifestte requires_core; örnekler >=0.1 <1.0. |
| PHP | 8.3 | Sunucu ve kalite kapısı yalnız PHP 8.3 ile doğrulanır. |
| MariaDB | 10.3.39+ | InnoDB ve strict session modu; global sunucu ayarı değiştirilmez. |
| REST API | v1 / 1.0.0 | Yayımlanmış operation ve alanlar v1 içinde sessizce kaldırılamaz veya daraltılamaz. |
| Manifest | v1 | Bilinmeyen alanlar ve yanlış şema kimliği reddedilir. |
| Tema template | contract 1 | Breaking override değişimi yeni contract sürümü ister. |
Deprecation politikası
API öğesinde yalnız deprecated: true yeterli değildir. Aynı öğe x-bse-deprecated-since, x-bse-remove-in ve x-bse-replacement metadata alanlarını taşır. Kaldırma paralel major sözleşmeye bırakılır. Hook sözleşmesindeki kırıcı değişiklik yeni .vN adı alır.
06Güvenlik sınırları
Geliştirme kolaylığı çalışma zamanı güven zincirini gevşetmez.
Özel anahtar yokİmzalama anahtarları mağaza sunucusuna, ZIP'e veya web köküne konmaz.
Runtime bağımsızUygulama şemaları yerel kaynaktan okur; bu doküman sitesi çalışma bağımlılığı değildir.
Fail closedŞema, imza, checksum veya uyumluluk hatasında paket kodu yüklenmez.
07Makine tarafından okunan sözleşmeler
Bu dosyalar belgede anlatılan sürümlerle byte düzeyinde eşleştirilir.