karnoweb / laravel-livewire-kanban
Domain-agnostic enterprise Kanban and List UI for Laravel Livewire
13.0.0
2026-10-15 13:13 UTC
Requires
- php: ^8.3
- illuminate/support: ^13.0
- livewire/livewire: ^4.0
Requires (Dev)
- laravel/reverb: ^1.12
- orchestra/testbench: ^11.0
- phpunit/phpunit: ^12.5.8
Suggests
None
Provides
None
Conflicts
None
Replaces
None
README
رابط Board و List برای Laravel 13 و Livewire 4. پکیج جدول، migration یا مدل کسبوکار ندارد. داده و تغییر را میزبان با DataProvider و ActionHandler انجام میدهد.
نصب
composer require karnoweb/laravel-livewire-kanban
دارایی آماده:
<link rel="stylesheet" href="{{ asset('vendor/kanban/kanban.css') }}"> <script src="{{ asset('vendor/kanban/kanban.js') }}" defer></script>
انتشار دارایی:
php artisan vendor:publish --tag=kanban-assets php artisan vendor:publish --tag=kanban-config
kanban.js نباید Alpine، Livewire یا Echo را دوباره راهاندازی کند. Echo را خود میزبان، فقط وقتی Realtime روشن است، میسازد.
ثبت برد
use Karnoweb\Kanban\Support\BoardRegistry; public function boot(BoardRegistry $registry): void { $registry->register('crm.deals', \App\Kanban\CrmBoardFactory::class); }
هویت و tenant فقط از ScopeResolver سرور میآید. board-key مجوز نیست.
<livewire:kanban-board board-key="crm.deals" />
قرارداد کوتاه
Kanban::init()هر بار یکBoardBuilderتازه میدهد.build()یکBoardDefinitionتغییرناپذیر برمیگرداند.- Closure در state کامپوننت Livewire ذخیره نمیشود؛
onMove()فقط کلاسActionHandlerمیپذیرد. - انتقال پیشفرض
denyاست. UNKNOWN_OUTCOMEموفقیت نیست. فرمان باoperationIdتازه تکرار نمیشود.- صفحهبندی cursor-based است. پیشفرض هر ستون ۲۵ کارت است.
راهنمای کامل در docs/ است. سناریوهای پذیرش KB-001 تا KB-044 در tests/Scenarios هستند.
مجوز این مخزن تا اعلام مالک proprietary است و مجوز متنباز محسوب نمیشود.