Skip to content

Latest commit

 

History

2 Commits

Folders and files

NameName
Last commit message
Last commit date
 
 
 
 
 
 
 
 
 
 
 
 

Repository files navigation

Herkobi — Ürün (Product) Modülü

Herkobi paneli için generic ürün kataloğu modülü — ürün, sınırsız iç içe kategori ve marka yönetimi. Çekirdeği tek satır düzenlemeden panele menü + rota + yetki + ekran ekler. Tek başına çalışır ve başka hiçbir modüle bağımlı değildir — ihtiyaç duyulan her kurulumda doğrudan kullanılır. Projeye özel uyarlama gerekirse sonradan yapılır.

Modül tam bir Laravel kurulumu değildir — küçük bir composer paketidir ve bir host (Herkobi panel) içine takılır. React/shadcn/Tailwind paketin içinde yoktur; ekran .tsx'leri host'un bileşenlerini @ alias ile import eder ve host'un Vite'ı derler.

Ne yapar

  • Ürün yönetimi — liste, arama, oluştur, görüntüle, güncelle, sil. Alanlar: ad, slug (addan otomatik), SKU, seri no, açıklama, görsel, fiyat, indirimli fiyat, kategori, marka, aktif/pasif durumu. Varyasyon yoktur.
  • Kategorilerparent_id ile sınırsız iç içe ağaç. Döngü koruması serviste (bir kategori kendisinin/torununun altına taşınamaz).
  • Markalar — sade marka kayıtları.
  • Tek görsel — ürün, kategori ve markanın her biri için tek görsel. Public disk'e yüklenir; 1 MB (1024 KB) ile sınırlı (JPG/PNG/WEBP).
  • Hafif arama ucu — başka ekranlardan ürün aramak için JSON uç noktası.
  • Modeller: HasUuids, SoftDeletes, BelongsToAccount, HasStatus.

Bu repo neyi içerir

.
├─ composer.json                                # auto-discovery (extra.laravel.providers)
├─ module.json                                  # install/uninstall manifesti
├─ src/
│  ├─ ProductServiceProvider.php                # hook bağlamaları (rota/menü/yetki)
│  ├─ Models/{Product,Category,Brand}.php       # HasUuids, SoftDeletes, BelongsToAccount, HasStatus
│  ├─ Services/{Product,Category,Brand}Service.php  # iş mantığı + görsel yükleme (FileService)
│  ├─ Http/
│  │  ├─ Controllers/Panel/{Products,Categories,Brands}Controller.php
│  │  ├─ Requests/Panel/Save{Product,Category,Brand}Request.php   # 1MB görsel doğrulaması
│  │  └─ Resources/Panel/{Product,Category,Brand}Resource.php
│  ├─ Events/Product/                           # Created / Updated / Deleted
│  └─ Listeners/Product/                        # activity-log kayıtları
├─ database/
│  ├─ migrations/..._create_{brands,categories,products}_table.php
│  └─ factories/{Brand,Category,Product}Factory.php
└─ resources/js/
   ├─ pages/panel/{products,categories,brands}/ # index / create / show (host Vite derler)
   ├─ components/
   │  ├─ {product,category,brand}-form-fields.tsx
   │  └─ image-field.tsx                         # ortak tek-görsel yükleme alanı
   └─ types/product.ts

Görsel saklama

Görseller public disk altında products/, categories/, brands/ klasörlerinde tutulur (FileService::storePublicImage). Modelde yalnızca image_path (string) kolonu vardır; kalıcı public URL Resource'ta üretilir. Tek görsel mantığı: yeni görsel yüklenince eski dosya silinir; formdaki "Görseli kaldır" seçeneği mevcut görseli temizler. 1 MB sınırı Save*Request içinde (image ... max:1024) uygulanır.

Panele takılma noktaları

ProductServiceProvider::register() içinde, çekirdek hiç düzenlenmeden:

Hook Katkı
panel.routes.register panel.products.*, panel.categories.*, panel.brands.* rotaları
panel.menu.register Kendi menü grubu: Ürünler (Ürünler / Kategoriler / Markalar)
panel.permissions.register İlgili yetkiler (source: 'product')

Not: Görsel yüklemesi için products/categories/brands update rotaları POST'tur (multipart yükleme). boot() yalnızca migration yükler.

Genişletme (olaylar)

Modül ürün işlemlerinde şu olayları yayınlar. Başka modüller (ör. stok, sipariş) bunları dinleyerek product'a bağlanabilir; product onlara bağımlı değildir:

  • ProductCreatedEvent
  • ProductUpdatedEvent
  • ProductDeletedEvent

Hızlı başlangıç (geliştirme)

Host = çalışan bir Herkobi panel checkout'u. Panel modülleri packages/*/module.json ve vendor/herkobi/*/module.json yollarından keşfeder.

  1. Bu repo'yu panelin yanına klonla (ör. ../herkobi-product-module).
  2. Panelin composer.json'una path repository ekle:
    "repositories": [
      { "type": "path", "url": "../herkobi-product-module", "options": { "symlink": true } }
    ]
  3. Panelde:
    composer require herkobi/product:@dev
    php artisan herkobi:install product   # migrate + yetki seed
    php artisan storage:link              # public görseller için (bir kez)
    npm run build                         # products/categories/brands ekranlarını derle
  4. Sidebar'da Ürünler görünür (Super Admin'de hemen; diğerlerinde Yetkiler/Roller'den panel.products.* vb. atanınca).

Windows: symlink için Geliştirici Modu açık olmalı; değilse composer kopyalar (çalışır ama her değişiklikte composer update herkobi/product).

Kaldırma (sıra önemli)

php artisan herkobi:uninstall product   # composer remove'dan ÖNCE
composer remove herkobi/product

module.json: permissions: "remove" (kaldırınca yetkiler silinir), purge_data: false (ürün/kategori/marka verisi korunur).

About

Herkobi Product Module

Resources

Stars

0 stars

Watchers

0 watching

Forks

Releases

Packages

Used by

Contributors

Languages