slimani/filament-media-manager
A media manager plugin for Filament v4 and v5 with hierarchical folders, tagging, search and filtering, previews, and configurable multi-disk storage. Built natively for Filament forms, tables, and actions with a smooth, responsive browser UI and per-field or global disk settings.
filament-select-tree, tagging, search/filter/sort, bulk actions, move dialogs, previews, and a media picker modal.media_files, media_attachments, and tags tables plus a InteractsWithMediaFiles trait on host models, with *_id foreign keys for single-file relations and the package's pivot table for polymorphic collections. This is a schema-level decision that shapes future migrations, API resources, and export/import tooling — decide it before you have thousands of records, not after.conversions_disk respect, renderRichContent() for expiring-link resolution) lets you choose between CDN-friendly public buckets and private tenant assets. That's a genuine product decision about content sensitivity, not just a config toggle.->tenantAware() is opt-in and requires an extra migration plus backfilling existing records. If you're building a B2B SaaS with Filament's tenant scoping, this determines whether the media manager is usable at all in a multi-tenant panel — plan the backfill and disk-per-tenant story up front, and note the documented caveat that public disk URLs remain publicly reachable even when records are tenant-scoped.MediaManagerRichContentPlugin on RichEditor plus HasRichContent on models supports marketing pages, knowledge bases, and product descriptions where non-technical editors embed images — a common "we need a CMS" request you can satisfy inside the existing admin panel instead of buying a separate CMS.Consider it when all of the following hold:
FileUpload field on one form. Filament's built-in uploads already cover the simple case; this package earns its place when editors must reuse assets across records.filament-select-tree — you'll be running their migrations and inheriting their upgrade cadence.Look elsewhere or build in-house when:
For executives: This is a free, MIT-licensed plugin that gives our Filament admin panel a full media library — folders, tags, search, bulk actions, and a picker we can drop into any form — in days instead of the several weeks a custom build would take. It slots into our existing stack (Filament + Spatie MediaLibrary) with no new infrastructure, supports both public CDN assets and private signed-URL assets, and can be scoped per tenant for our B2B customers. The trade-off is maturity: it's a young, small-community package, so we should treat it as a fast first version with a plausible fork-and-own path, not as a decade-long vendor commitment. Recommend a timeboxed spike plus a documented exit plan.
For engineering: Native Filament v4/v5 integration — MediaManagerPlugin registration, MediaPicker form field, MediaColumn, MediaImageEntry/MediaFileEntry infolists, and a RichEditor plugin with renderRichContent() to solve expired signed URLs at render time. Adoption requires publishing the package and Spatie migrations, adding the InteractsWithMediaFiles trait and foreign keys for single-file relations, and a custom theme import plus @source directive if we use a custom Filament theme. Multi-tenancy is opt-in via an extra migration and ->tenantAware(), with a pluggable tenant resolver and column name. Known watch items: multi-select UX is under upstream review (#18), video thumbnails need FFMPEG, and the project has one apparent maintainer with zero dependent packages — so pin versions, keep the config published in-repo, and avoid patching vendor code so we can fork cleanly if upstream stalls.
How can I help you explore Laravel packages today?