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 Jobs Monitor Laravel Package

croustibat/filament-jobs-monitor

View on GitHub
Deep Wiki
Context7

Technical Evaluation

Architecture Fit

  • Horizon-like UI for Filament: The package provides a Filament-admin-compatible job monitoring dashboard, leveraging Filament’s resource system (similar to Laravel Nova/Horizon). This aligns well with applications already using Filament for admin interfaces, reducing UI/UX fragmentation.
  • Driver Agnostic: Supports all Laravel queue drivers (database, redis, sync, etc.), making it versatile for different deployment environments.
  • Multi-tenancy Support: Built-in tenant filtering (via payload inspection) is a critical feature for SaaS applications, though it requires explicit job class compliance (tenantId property).
  • Extensibility: Custom model extension and plugin configuration allow for tailored integrations (e.g., adding custom job metadata or actions).

Integration Feasibility

  • Low Friction for Filament Users: Designed as a Filament plugin, it integrates seamlessly with existing Filament panels (v3–v5). No major architectural changes required.
  • Queue Configuration: Requires manual queue definition in config (since Laravel lacks a universal way to discover all queues). This is a minor trade-off for accuracy.
  • Database Dependency: Relies on a queue_monitors table (published via migrations). No external services (e.g., Redis) are required for core functionality.
  • Job Payload Inspection: Uses Laravel’s job payload serialization to extract tenant IDs and other metadata. This is reliable but requires jobs to be serializable (standard for Laravel jobs).

Technical Risk

Risk Area Assessment Mitigation Strategy
Filament Version Lock Tied to Filament v2–v5. Upgrade path may require manual adjustments (e.g., v3→v4 breaking changes). Test in a staging environment; use composer require with version constraints.
Multi-tenancy Complexity Tenant ID extraction via payload inspection fails silently if jobs lack tenantId. Enforce job class standards via CI checks or documentation.
Performance at Scale No built-in pruning for old jobs (though configurable). Large queues may bloat the DB. Enable pruning.enabled and monitor queue_monitors table growth.
Customization Limits Plugin configuration is closed (e.g., no easy way to override table columns). Extend the model or use Filament’s resource overrides.
Job Payload Corruption If jobs use non-serializable data (e.g., closures), monitoring may fail. Validate jobs during development; avoid non-serializable payloads.

Key Questions for Stakeholders

  1. Filament Version: Are you using Filament v3, v4, or v5? (Affects plugin compatibility and migration effort.)
  2. Multi-tenancy Needs: Do you require tenant-aware job monitoring? If so, can all jobs include a tenantId property?
  3. Queue Drivers: Which queue drivers are in use? (Some drivers may need additional setup for payload inspection.)
  4. Scaling Concerns: How many jobs are processed daily? (Pruning and database indexing may need tuning.)
  5. Customization Requirements: Do you need to modify the UI (e.g., add columns, change actions) or extend functionality (e.g., job retries)?
  6. CI/CD Impact: Will this require changes to job dispatching logic (e.g., adding tenantId to all jobs)?
  7. Monitoring Gaps: Are there specific job metadata fields (e.g., user IDs, priority) you need to track beyond what the plugin provides?

Integration Approach

Stack Fit

  • Primary Use Case: Ideal for Filament-powered admin panels where Horizon is unavailable or overkill. Fits best in:
    • SaaS applications with multi-tenancy.
    • Applications using database queues (no Redis dependency).
    • Teams already using Filament for admin interfaces (reduces context switching).
  • Anti-Patterns: Avoid if:
    • You need real-time monitoring (this is a polling-based UI).
    • Your jobs are highly dynamic (e.g., closures in payloads).
    • You require advanced features like job throttling (Horizon provides this natively).

Migration Path

Step Action Notes
1. Pre-Installation Audit Filament version and PHP compatibility. Use the version matrix to select the correct package version.
2. Composer Install composer require croustibat/filament-jobs-monitor Pin to a specific version (e.g., ^4.4 for Filament v5).
3. Publish Assets Run migrations and config: php artisan vendor:publish --tag="filament-jobs-monitor-migrations" Back up the queue_monitors table if it exists.
4. Configure Queues Define queues in config/filament-jobs-monitor.php. Explicitly list all queues to monitor (e.g., ['default', 'emails', 'reports']).
5. Multi-tenancy Setup If needed:
- Publish config: php artisan vendor:publish --tag="filament-jobs-monitor-config"
- Enable tenancy and set model/column.
- Add tenantId to job classes.
6. Plugin Registration Register the plugin in AdminPanelProvider.php: Use FilamentJobsMonitorPlugin::make()->enableNavigation() for visibility.
7. Testing Dispatch test jobs and verify:
- Jobs appear in /admin/queue-monitors.
- Tenant filtering works (if enabled).
- Failed jobs show exceptions.
8. Customization Extend the model or override resources if needed. Example: php artisan make:model MyQueueMonitor to add custom methods.

Compatibility

  • Filament Versions: Tested with v2–v5. Major version upgrades (e.g., v3→v4) may require:
    • Updating plugin configuration (e.g., form(Schema $schema) instead of form(Form $form)).
    • Adjusting action namespaces (e.g., Filament\Actions instead of Filament\Tables\Actions).
  • Laravel Versions: PHP 8.1+ required. No Laravel version constraints beyond Filament’s.
  • Queue Drivers: Works with all drivers, but payload inspection may be less reliable for non-database drivers (e.g., sync).
  • Third-Party Dependencies: No hard dependencies beyond Filament and Laravel.

Sequencing

  1. Phase 1: Core Integration (1–2 days)
    • Install, publish, and configure the plugin.
    • Verify basic job visibility.
  2. Phase 2: Multi-tenancy (0.5–1 day, if needed)
    • Update job classes and test tenant filtering.
  3. Phase 3: Customization (0–2 days)
    • Extend the model or override resources for additional fields/actions.
  4. Phase 4: Monitoring & Optimization (Ongoing)
    • Set up pruning for old jobs.
    • Monitor database growth and query performance.

Operational Impact

Maintenance

  • Plugin Updates: Follow the changelog for breaking changes (e.g., Filament v4 migration). Minor updates (e.g., v4.4.x) are low-risk.
  • Database Schema: Migrations are idempotent but may require manual adjustments for custom columns (e.g., adding tenant_id post-install).
  • Configuration Drift: Centralized config file reduces risk of misconfigurations. Use php artisan config:clear if changes don’t apply.
  • Dependency Management: Monitor Filament and Laravel version compatibility. Example:
    composer require croustibat/filament-jobs-monitor:^4.4 --with-all-dependencies
    

Support

  • Troubleshooting Common Issues:
    Issue Solution
    Jobs not appearing Verify queues are listed in config. Check job payload serialization.
    Tenant filtering broken Ensure jobs include tenantId and config is enabled.
    "Details" action crashes Update to v4.4.1+ (fixes exception_message null error).
    Slow UI performance Add indexes to queue_monitors table (e.g., tenant_id, queue, failed_at).
  • Community Support: Active GitHub repo with 274 stars.
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.
codraw/framework-extra-bundle
codraw/messenger
codraw/security
codraw/mailer
codraw/contracts
codraw/profiling
codraw/dependency-injection
codraw/tester
codraw/core
nexmo/api-specification
capell-app/block-library
axium/identity
cetria/laravel-dummy-models
cetria/reflection-helper
agropredict/sso-auth-bundle
evolvestudio/spam-protection
datacore/hub-sdk
develia/commons
cuci/prototurk-sdk
cuci/prototurk-sdk-symfony