Weave Code
Code Weaver
Helps Laravel developers discover, compare, and choose open-source packages. See popularity, security, maintainers, and scores at a glance to make better decisions.
Feedback
Share your thoughts, report bugs, or suggest improvements.
Subject
Message

Filament Plugins Laravel Package

tomatophp/filament-plugins

View on GitHub
Deep Wiki
Context7

Technical Evaluation

Architecture Fit

  • Modularity Alignment: The package aligns well with Laravel’s modular architecture, enabling plugin-based feature isolation (e.g., Filament admin panels, custom modules). This is particularly valuable for monolithic applications transitioning to microservices or large-scale Laravel projects requiring dynamic feature toggling.
  • Filament Integration: Designed specifically for Filament, a modern Laravel admin panel framework, ensuring seamless UI/UX integration (e.g., plugin management dashboards, CRUD generators).
  • Generator Pattern: Leverages Laravel’s service provider and package auto-discovery patterns, reducing boilerplate for plugin scaffolding (e.g., tables, columns, policies).
  • Opportunity Gaps:
    • No built-in dependency resolution between plugins (risk of conflicts if plugins share namespaces or routes).
    • Limited documentation for advanced use cases (e.g., plugin versioning, cross-plugin communication).

Integration Feasibility

  • Low-Coupling: Plugins are self-contained, with minimal core framework intrusion (ideal for greenfield projects or incremental adoption).
  • Filament Dependency: Requires Filament v2+ (check compatibility with your Laravel version; e.g., Filament 3.x may need adjustments).
  • Database Agnostic: No hard DB assumptions, but plugin-specific migrations must be managed manually.
  • Tooling Compatibility:
    • Works with Laravel Forge, Laravel Sail, and Homestead (Docker-based environments).
    • CI/CD: Supports composer install --optimize-autoloader for plugin auto-loading.

Technical Risk

Risk Area Severity Mitigation Strategy
Plugin Isolation Breaks High Enforce unique plugin namespaces; use config('filament-plugins.whitelist').
Filament Version Drift Medium Pin filament/filament to a compatible version in composer.json.
Performance Overhead Low Benchmark plugin auto-loading with opcache.enable=1.
Security (Plugin Sandbox) Medium Validate plugin sources; restrict filament-plugins:install to trusted roles.

Key Questions

  1. Plugin Scope:
    • Will plugins be internal tools (low risk) or public marketplace (higher security/validation needs)?
  2. Filament Version:
    • Is your project using Filament 2.x or 3.x? (Package may need forks for 3.x).
  3. Migration Path:
    • How will existing Laravel modules (e.g., custom packages) be migrated to plugins?
  4. Dependency Management:
    • Are plugins expected to depend on each other (e.g., Plugin A requires Plugin B)?
  5. Deployment Strategy:
    • Will plugins be hot-reloaded (e.g., for live updates) or versioned (e.g., via Composer)?

Integration Approach

Stack Fit

  • Laravel Ecosystem:

    • Core: Works with Laravel 9/10 (tested with Filament 2.x).
    • Extensions:
      • Filament Plugins: Native support for Filament resources, widgets, and policies.
      • Laravel Mix/Vite: Plugin assets (JS/CSS) can be bundled via Filament’s asset pipeline.
      • Laravel Scout: Plugin-specific search indexes require manual integration.
    • Third-Party:
      • Spatie Laravel-Permission: Plugins can extend role/policy logic.
      • Nova/Backpack: Limited compatibility (Filament-first design).
  • Non-Laravel:

    • Symfony: Not directly applicable (Laravel-specific features like Artisan commands).
    • React/Vue Frontends: Plugins render via Filament’s Blade/Inertia, so frontend frameworks must align with Filament’s stack.

Migration Path

  1. Assessment Phase:
    • Audit existing custom packages/modules for plugin compatibility (e.g., no hardcoded routes).
    • Identify critical dependencies (e.g., shared services) that may need refactoring.
  2. Pilot Migration:
    • Convert one non-core module (e.g., a reporting tool) to a plugin.
    • Test with filament-plugins:generate and validate auto-loading.
  3. Incremental Rollout:
    • Use feature flags to toggle plugin visibility during migration.
    • Leverage config('filament-plugins.disabled') to blacklist legacy modules.
  4. Final Cutover:
    • Replace ServiceProvider registrations with plugin auto-discovery.
    • Update composer.json to merge plugin classes.

Compatibility

Component Compatibility Notes
Laravel 9/10 ✅ Full support.
Filament 2.x ✅ Primary target.
Filament 3.x ⚠️ May require forks (check filament/filament breaking changes).
Livewire ✅ Plugins can extend Livewire components.
Inertia.js ✅ Works if Filament uses Inertia for the frontend.
Custom Packages ❌ May need refactoring (e.g., global helpers, facades).
Queue Workers ✅ Plugins can define their own queue listeners.

Sequencing

  1. Pre-Install:
    • Configure composer.json:
      "extra": {
        "laravel": {
          "merge-plugin": {
            "providers": true,
            "aliases": true
          }
        }
      }
      
    • Run php artisan filament-plugins:install.
  2. Plugin Development:
    • Generate a plugin:
      php artisan filament-plugins:generate InvoiceManagement --resource
      
    • Customize PluginServiceProvider and Plugin.php.
  3. Testing:
    • Use php artisan filament-plugins:list to verify registration.
    • Test plugin isolation (e.g., disable one plugin to check for leaks).
  4. Deployment:
    • Deploy plugins via Composer (composer require vendor/plugin) or Git submodules.
    • For hot-reload, use php artisan optimize:clear post-update.

Operational Impact

Maintenance

  • Pros:
    • Isolated Updates: Plugins can be updated independently (e.g., fix a bug in the InvoiceManagement plugin without touching core).
    • Generator DRY: Reduces boilerplate for new plugins (e.g., --resource flag auto-generates CRUD).
    • Community: MIT license allows forks/modifications (e.g., adding plugin versioning).
  • Cons:
    • Fragmented Dependencies: Plugins may pull in conflicting versions of libraries (e.g., spatie/laravel-permission).
    • Debugging Complexity: Plugin-specific logs must be routed (e.g., Monolog channels per plugin).
    • Documentation Gaps: Lack of examples for advanced plugin features (e.g., plugin-to-plugin communication).

Support

  • Internal Teams:
    • Onboarding: Requires familiarity with Filament and Laravel’s service container.
    • Troubleshooting: Use php artisan filament-plugins:debug to inspect plugin loading.
  • External/Vendor Support:
    • Limited community (63 stars, no dependents). May need to maintain a fork for critical fixes.
    • SLAs: Define response times for plugin-related issues (e.g., "Plugin X breaks after Laravel 10.5 update").
  • Error Handling:
    • Plugins should implement PluginContract::onError() to gracefully handle failures (e.g., log to Sentry).

Scaling

  • Performance:
    • Auto-Loading Overhead: Minimal if using opcache (test with php artisan optimize).
    • Database: Plugin-specific migrations must be batched to avoid long-running transactions.
    • Caching: Use Cache::tags('plugin:invoicemanagement') for plugin-scoped caching.
  • Concurrency:
    • Plugin Locks: Implement Redis locks for critical plugin operations (e.g., invoice generation).
    • Queue Workers: Offload plugin tasks to queues (e.g., InvoiceGenerated events).
  • Horizontal Scaling:
    • Plugins are stateless by design (ideal for multi-server setups).
    • Stateful Plugins: Use database or redis sessions for user-specific plugin data.

Failure Modes

Failure Scenario Impact Mitigation
Plugin Auto-Loading Fails Entire app crashes Use try-catch in PluginServiceProvider.
Plugin Conflict (Routes/Views) Route conflicts, 404s Enforce unique route prefixes (e.g., /plugins/invoices).
Database Migration Errors Plugin data corruption Rollback migrations with
Weaver

How can I help you explore Laravel packages today?

Conversation history is not saved when not logged in.
Prompt
Add packages to context
No packages found.
daikazu/eloquent-salesforce-objects
unseen-codes/chat
romalytar/yammi-jobs-monitoring-laravel
kisame76/filament-db-table-state
nqxcode/laravel-lucene-search
dpfx/laravel-livewire-wizards
workos/workos-php-laravel
sofa/laravel-global-scope
nawasara/auth-primitives
adhocrat-io/arkhe-main
make-dev/orca-harpoon
itsemon245/lamet
baks-dev/dashboard
amoifr/pickle-panther-bundle
make-dev/orca
dmstr/symfony-system-resources-bundle
dmstr/symfony-job-queue-bundle
dmstr/openapi-json-schema-bundle
dmstr/keycloak-security-bundle
dmstr/doctrine-audit-log-bundle