Herkobi paneli için generic müşteri (cari kart) yönetimi modülü. Ç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 (servis, eczane, spor salonu, satış vb.) doğrudan kullanı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.
- Cari kart yönetimi — bireysel / kurumsal müşteri (
CustomerType) kayıtları: liste, arama, oluştur, görüntüle, güncelle, sil. - Hafif arama ucu — başka ekranlardan müşteri aramak için JSON uç noktası.
- Uygulama erişimi — müşteriye panel/uygulama erişimi açma (Account + üye User oluşturur, davet e-postası gönderir).
- Model:
HasUuids,SoftDeletes,BelongsToAccount,HasStatus.
.
├─ composer.json # auto-discovery (extra.laravel.providers)
├─ module.json # install/uninstall manifesti
├─ src/
│ ├─ CustomerServiceProvider.php # hook bağlamaları (rota/menü/yetki)
│ ├─ Models/Customer.php # HasUuids, SoftDeletes, BelongsToAccount
│ ├─ Enums/CustomerType.php # Bireysel / Kurumsal
│ ├─ Services/CustomerService.php # iş mantığı (create/update/delete/appAccess)
│ ├─ Http/
│ │ ├─ Controllers/Panel/CustomersController.php
│ │ ├─ Requests/Panel/SaveCustomerRequest.php
│ │ └─ Resources/Panel/CustomerResource.php
│ ├─ Events/Customer/ # Created / Updated / Deleted / AppAccessGranted
│ └─ Listeners/Customer/ # activity-log kayıtları
├─ database/
│ ├─ migrations/..._create_customers_table.php
│ └─ factories/CustomerFactory.php
└─ resources/js/
├─ pages/panel/customers/ # index / create / show (host Vite derler)
├─ components/customer-form-fields.tsx # ortak form alanları
└─ types/customer.ts
CustomerServiceProvider::register() içinde, çekirdek hiç düzenlenmeden:
| Hook | Katkı |
|---|---|
panel.routes.register |
panel.customers.* rotaları (/panel/customers) |
panel.menu.register |
Kendi menü grubu: Müşteriler |
panel.permissions.register |
panel.customers.* yetkileri (source: 'customer') |
boot() yalnızca migration yükler. Migration'lar pakette kalır, modülle
versiyonlanır.
Modül kendi işini yaparken şu olayları yayınlar. Başka modüller (kuruluysa) bunları dinleyerek customer'a bağlanabilir; customer onlara bağımlı değildir:
CustomerCreatedEventCustomerUpdatedEventCustomerDeletedEventCustomerAppAccessGrantedEvent
Bu, customer'ı hiç düzenlemeden yeni davranış eklemenin (ör. bir servis modülünün kendi kayıtlarını müşteriye bağlaması) temiz yoludur.
Host = çalışan bir Herkobi panel checkout'u. Panel modülleri
packages/*/module.json ve vendor/herkobi/*/module.json yollarından keşfeder
(bkz. config/herkobi.php → module_discovery_paths).
- Bu repo'yu panelin yanına klonla (ör.
../herkobi-customer-module). - Panelin
composer.json'una path repository ekle (zatenpackages/*symlink repo'su tanımlı — modülüpanel/packages/customerolarak da bağlayabilirsin): - Panelde:
composer require herkobi/customer:@dev php artisan herkobi:install customer # migrate + yetki seed npm run build # customers/*.tsx ekranlarını derle
- Sidebar'da Müşteriler görünür (Super Admin'de hemen; diğerlerinde
Yetkiler/Roller'den
panel.customers.*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/customer).
php artisan herkobi:uninstall customer # composer remove'dan ÖNCE
composer remove herkobi/customermodule.json: permissions: "remove" (kaldırınca yetkiler silinir),
purge_data: false (müşteri verisi korunur).