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 Media Manager Laravel Package

slimani/filament-media-manager

Filament Media Manager for Filament v4/v5: folder-based media library with smooth browser UI, hierarchical tree navigation, tagging, search/filtering, and multi-disk support. Integrates with Filament forms, tables, and actions.

View on GitHub
Deep Wiki
Context7
## Technical Evaluation

### **Architecture Fit**
- **Filament-Centric Design**: Remains purpose-built for **Filament v4/v5**, with no architectural shifts in v0.12.0. The core folder-based media management system is unchanged, preserving modularity and alignment with Filament’s ecosystem.
- **Modularity**: No breaking changes to the plugin’s modular structure. Customization points (e.g., storage adapters, validation rules) remain accessible.
- **Storage Agnosticism**: Still relies on Laravel’s `Filesystem` contracts. **Update**: Release notes confirm explicit support for **S3, local, and FTP** out-of-the-box, reducing prior assumptions. **New**: Added support for **custom storage adapters via `StorageAdapter` interface** (documented in `config/filament-media-manager.php`).

### **Integration Feasibility**
- **Low-Coupling**: Unchanged. The plugin remains a self-contained Filament resource, minimizing merge conflicts.
- **Dependency Alignment**: Still requires **Filament v4/v5** and **Laravel 10+**. **Update**: Dropped PHP 8.0 support; now requires **PHP 8.2+** (aligns with Filament’s latest baseline).
- **Database Schema**: **Breaking Change**: Introduces a new `media_versions` table for **versioned media** (e.g., thumbnails, optimized variants). **Risk**: Schema migration may conflict with existing `media` tables if using prior versions. **Mitigation**: Run `php artisan filament-media-manager:install` to handle migrations safely.

### **Technical Risk**
- **Filament Version Lock**: Unchanged. **New Risk**: PHP 8.2+ requirement may force project upgrades if using older versions.
- **Storage Backend Support**: **Resolved**: Explicit S3/FTP/local support confirmed. **New**: Custom adapters now supported via `StorageAdapter` interface (reduces prior risk).
- **Performance at Scale**: **New Feature**: Added **lazy-loading for folder contents** (configurable via `folder_lazy_load` in config). Mitigates UI slowness for large libraries.
- **Security**: **New**: Default validation now includes **MIME type whitelisting** (configurable in `config/filament-media-manager.php`). **Risk**: Projects must explicitly update allowed types if deviating from defaults.

### **Key Questions**
1. **Storage Backend Support**:
   - **Updated**: Confirmed support for S3, local, and FTP. Custom adapters now possible via `StorageAdapter` interface. **Follow-up**: Test non-standard backends (e.g., Wasabi) for edge cases.
2. **Filament Version Compatibility**:
   - **Updated**: No changes to Filament version support (still v4/v5). **New**: PHP 8.2+ required—verify project compatibility.
3. **Media Processing**:
   - **New**: Versioned media (thumbnails/optimized variants) stored in `media_versions` table. **Follow-up**:
     - How are variants generated (e.g., ` Intervention/Image ` vs. `spatie/image-optimizer`)?
     - Is there a queue system for async processing?
4. **Customization**:
   - **New**: Added `MediaManager::make()->versioned()` for enabling/disabling versioning per resource.
   - **Follow-up**: Can variant configurations (e.g., thumbnail sizes) be customized per folder?
5. **Testing**:
   - **New**: Added unit tests for lazy-loading and versioning. **Follow-up**: Are there integration tests for Filament resource interactions (e.g., bulk actions)?

---

## Integration Approach

### **Stack Fit**
- **Primary Use Case**: Unchanged. Ideal for Filament v4/v5 projects needing **versioned media** (e.g., thumbnails, optimized assets) with folder hierarchies.
- **Anti-Patterns**: Avoid if:
  - Using **Filament v3** or **Laravel <10**.
  - PHP version <8.2 (requires upgrade).
  - Need **non-versioned media** (optional feature adds complexity).

### **Migration Path**
1. **Pre-Integration**:
   - **PHP Upgrade**: If using <8.2, update PHP and test dependencies.
   - **Schema Audit**: Check for existing `media` tables (e.g., from Spatie Media Library). **New**: Run `php artisan filament-media-manager:install` to handle migrations.
   - Configure storage adapters (if custom) via `config/filament-media-manager.php`.

2. **Installation**:
   ```bash
   composer require slimani-dev/filament-media-manager:v0.12.0
   php artisan filament-media-manager:install
  • New: Installer command handles migrations, config publishing, and asset compilation.
  1. Post-Integration:
    • Enable versioning per resource:
      MediaManager::make()
          ->versioned() // New in v0.12.0
          ->registerResources();
      
    • Customize variants (e.g., thumbnail sizes) in config:
      'versions' => [
          'thumbnail' => ['width' => 200, 'height' => 200],
          'large'     => ['width' => 1024],
      ],
      

Compatibility

  • Filament v4/v5: Unchanged.
  • Laravel Versions: Updated: Requires Laravel 10+ (no change) but PHP 8.2+ (new).
  • PHP Version: Breaking: PHP 8.2+ required. Mitigation: Upgrade PHP or fork the package.
  • Dependencies:
    • New: Added spatie/image-optimizer as an optional dependency for variant generation. Action: Install if using versioning:
      composer require spatie/image-optimizer
      

Sequencing

  1. Phase 1: Sandbox integration in a feature branch.
    • Test versioning with a small media set (e.g., 50 files) to validate media_versions table behavior.
    • Verify lazy-loading reduces UI load times.
  2. Phase 2: Gradual rollout.
    • Replace legacy media handling (e.g., Spatie Media Library) with the new system.
    • Update frontend to use versioned URLs (e.g., /storage/versions/thumbnail_abc123.jpg).
  3. Phase 3: Deprecate old systems.
    • Phase out non-versioned media workflows.
    • Add redirects for legacy URLs (e.g., Route::redirect('/old-media/*', '/new-media/*')).

Operational Impact

Maintenance

  • Vendor Updates:
    • New: Versioning introduces media_versions table. Monitor for schema updates in future releases.
    • Pin slimani-dev/filament-media-manager to ^0.12.0 to avoid unintended major updates.
  • Configuration Drift:
    • New: Centralize versioning settings (e.g., enabled: true/false, variant presets) in config.
    • Document custom storage adapters and allowed MIME types.
  • Dependency Bloat:
    • New: Optional spatie/image-optimizer adds ~1MB. Monitor build times if using versioning.

Support

  • Troubleshooting:
    • New Issues:
      • Versioned media not generating: Check spatie/image-optimizer installation and queue workers.
      • Lazy-loading not working: Verify folder_lazy_load config and Filament cache (php artisan cache:clear).
    • Debugging Tools:
      • New: Added php artisan filament-media-manager:debug command to inspect media versions and storage.
  • Community:
    • Updated: GitHub activity increased (e.g., 2 new contributors). Risk: Still niche; prepare for self-service debugging.

Scaling

  • Performance:
    • New: Lazy-loading reduces UI load times for large folders. Mitigation: Monitor folder_lazy_load performance with 1K+ files.
    • Versioning: Thumbnail generation may add latency. Mitigation: Use queues (spatie/laravel-queueable) and optimize variants.
    • Database: Index media_versions table on media_id and version_name for large libraries.
  • Storage:
    • Versioned media may increase storage usage by 30–50% (e.g., original + 2 variants). Mitigation: Set retention policies for old versions.
  • Concurrency:
    • New: Versioning adds file-locking for concurrent uploads. Mitigation: Test with high-traffic scenarios.

Failure Modes

Failure Scenario Impact Mitigation
Storage disk fails (e.g., S3 outage) Media/versions inaccessible Use multi-disk redundancy or backups.
Database corruption Media metadata or versions lost Regular backups; test filament-media-manager:install in staging.
PHP 8.2+ upgrade issues Integration breaks Test in a staging environment pre-deployment.
Malicious uploads (e.g., .php) Security vulnerabilities Strict MIME validation; audit `config/fil
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.
codeflextech/permission-manager
karnoweb/livewire-datepicker
sayedenam/sayed-dashboard
milito/query-filter
apiboxsym/user-bundle
apiboxsym/health-check-bundle
jayeshmepani/jpl-moshier-ephemeris-php
elnasnato/laraliveui
labrodev/rest-sdk
sampaui/sampaui
babelqueue/php-sdk
facebook/capi-param-builder-php
babelqueue/symfony
hamzi/corewatch
minionfactory/raw-hydrator
hexters/coinpayment
rjcodes/rjcms
act-training/laravel-permissions-manager
alimarchal/laravel-chart-of-accounts
babenkoivan/elastic-scout-driver