awcodes/filament-curator
Filament Curator is a media picker and manager plugin for Filament Admin, offering a full media library UI with Glide-signed image URLs and a one-command installer. Supports Filament 3, 4, and 5. Note that it does not work with Spatie Media Library.
CuratorPicker field plus the central library means content teams stop filing tickets for image swaps, crops, and focal points (curations). This is a support-cost decision, not just a technical one — it shifts work from engineering to content ops.<x-curator-glider> with srcset/sizes, and curation presets (WebP, quality, dimensions) let you make a defensible Core Web Vitals commitment without building an image-transformation service. Decide now whether image optimization is in scope for the release; retrofitting responsive images later is expensive.nosniff, forced Content-Disposition: attachment for restricted types, and SVG sanitization only. This supports a decision to accept user-supplied media with a documented residual risk, provided you opt private disks for anything exotic. If compliance requires AV scanning, DLP, or per-asset retention policy, that gap is yours to fill.Adopt when:
@import + @source for the plugin views) and adding CURATOR_GLIDE_TOKEN to .env.example and every deployment target.Look elsewhere (or build) when:
tenantAware and path generators give you.To executives: We can ship image management — upload, crop, reusable library, responsive/signed delivery — as a plugin install rather than a build. It's MIT licensed, so there's no licence cost, and it removes a feature that otherwise sits in the backlog indefinitely. The trade-offs are honest and small: a few days of setup (theme build, per-environment signing token), and a maintenance line item for keeping pace with Filament upgrades. The one decision I need from you is strategic: we are committing to a Filament-native admin and explicitly not to Spatie Media Library. If we ever want to reverse that, it costs a migration — so I'd rather we agree now than discover it in six months.
To engineering: Treat this as purchased plumbing with two operational sharp edges we must handle deliberately. First, the Glide token: it's per-environment, must exist in .env.example and every deploy (CI, staging, prod), and rotating it 403s every previously signed URL — cached HTML, CDN copies, sent emails. That needs a runbook and a "don't rotate casually" note, plus config:clear after any change. Second, upload security: the default MIME allow list is genuinely well-reasoned, and the package only sanitizes SVG. If product ever asks to allow HTML/XML or other opt-in types, the answer is a private disk, not a config tweak — the public storage symlink bypasses the protective headers. Also budget for: relationship columns need eager loading (modifyQueryUsing(fn ($q) => $q->with(...))) or you get N+1s, and we should pin the version and own the Filament major-upgrade testing. Finally, accept the bus-factor risk explicitly: worst case, we fork and maintain — which is a day or two a quarter, not a rewrite.
How can I help you explore Laravel packages today?