widiu7omo/filament-bandel
Filament Bandel is a Laravel package that integrates Bandel functionality into Filament admin panels. It provides a simple, configurable way to manage Bandel records and workflows alongside your existing Filament resources, with native UI and easy installation.
Architecture fit: filament-bandel is a Filament admin-panel extension that supplies table actions and a shared form schema for ban/unban workflows, likely backed by laravel-ban observers on the user model. For teams already using Filament for back-office administration, it fits as a narrow, UI-level accelerator rather than a core domain dependency. v3’s runtime Filament-version abstraction (Support\FilamentVersion) and shared BanForm reduce duplication across Filament 3/4/5, which is attractive for TPMs maintaining multiple admin panels or upgrade windows.
Integration feasibility: Feasible for greenfield and active-upgrade projects on PHP 8.2+, Laravel 11.8+/12/13, and Filament 3/4/5. Laravel 10 support is dropped, so teams on older Laravel must either stay on v2 or schedule a framework upgrade first. The breaking changes are manageable but require code review: action classes are now final, make() no longer accepts a custom name, and any subclass-based customization must move to chaining after make(). Integration depends on correct laravel-ban setup and observer behaviour, since bulk correctness relies on re-reading model state from the database.
Technical risk: Moderate. The multi-major Filament support is valuable but introduces runtime version-detection complexity; TPMs should require validation on the exact Filament/Laravel combination used in production, because the release’s end-to-end verification is on Laravel 13.27 / Filament 5.7.6 while the CI matrix covers broader combinations. The final action classes reduce extension flexibility and may break existing custom subclasses. Bulk operations now run in a transaction and use fresh record reads, which improves correctness but may increase lock duration on large selections. The package is coupled to laravel-ban observer semantics; any custom observer or direct banned_at manipulation should be tested.
Key questions:
laravel-ban version and observer configuration is required or supported?make()?Stack fit: Best fit is a Laravel 11.8+/12/13 application with PHP 8.2+ and Filament 3, 4, or 5. Teams on Laravel 10, PHP 8.1, or older Filament majors should not force v3; they should remain on v2 until the platform upgrade is complete. The single-branch Filament 3/4/5 support simplifies Composer constraints at the portfolio level, but each application still needs version-specific smoke testing.
Migration path: Upgrade PHP and Laravel first, then adopt v3. Replace any action subclasses with post-make() chaining. Remove custom name arguments from make() calls and re-register actions if the previous names were relied on in tests, policies, or UI references. Confirm the shared BanForm covers existing form fields and validation expectations, especially the new expired_at past-date rule. Re-test single and bulk ban/unban flows against real laravel-ban observers.
Compatibility: The package’s runtime namespace resolution must match the installed Filament major. Validate table action registration in the actual admin panel, not only through unit tests. Ensure laravel-ban migrations, traits, and observers are present and that the database supports transactions for the bulk path. If the application uses custom user models, soft deletes, teams/tenancy, or non-standard auth guards, add targeted integration tests.
Sequencing:
laravel-ban constraints.expired_at validation.Maintenance: Positive. The rebuilt Pest/testbench suite, CI matrix across Filament 3/4/5 × Laravel 11/12/13 × PHP 8.2–8.5, and Dependabot coverage reduce the risk of silent regressions. However, supporting three Filament majors from one branch means the maintainer must track upstream namespace and API changes continuously; TPMs should monitor releases before major Filament upgrades.
Support: Clearer requirements improve supportability, but the Laravel 10 drop creates a support boundary. Teams on older stacks need a documented “stay on v2” path. The final classes and removed custom-name argument should be called out in internal upgrade notes, because they change the supported customization pattern from subclassing to fluent configuration.
Scaling: Admin ban/unban actions are typically low-volume, so scaling risk is limited. Bulk operations inside a transaction with fresh reads improve correctness but can hold locks longer for large selections. If operators routinely bulk-process thousands of users, introduce selection limits, batching, or background jobs rather than relying on a single synchronous admin action.
Failure modes: Main risks are version-detection mismatch with the installed Filament major, broken custom subclasses or action names after upgrade, transaction rollback on bulk operations, stale-state issues if laravel-ban observers behave unexpectedly, and rejection of expired_at values that were previously accepted. The fresh-read fix specifically addresses skipped or duplicated bans caused by stale in-memory models, so bulk flows should be regression-tested with observers active.
Ramp-up: Low to moderate for Laravel/Filament developers. Greenfield adoption is straightforward once dependencies match. Existing v2 users need a short migration effort focused on action registration, customization chaining, and bulk-flow QA. TPMs should budget for staging verification on the exact production version combination rather than relying solely on the package’s CI matrix.
How can I help you explore Laravel packages today?