noerd/media
A Laravel media management package for uploading, storing, and associating files with Eloquent models. It offers media collections, image conversions, and a fluent API for attaching, retrieving, and organizing media.
Media model, a media folder table, and folder-tree organization removes a chunk of undifferentiated plumbing (uploads, storage wiring, folder hierarchy, file metadata) from your roadmap. That's time your team spends on differentiating features instead..thumbnails — a dot-prefixed directory that stock Forge nginx blocks, producing 403s on images. In PM terms: skipping intermediate versions silently broke a user-visible feature (images not loading) with no error at deploy time. If your release policy allows jumping versions, this package punishes it.composer update. The restored migration doesn't just create directories; it moves .thumbnails/.variants to _thumbnails/_variants and rewrites stored paths in the database. That means schema/data writes against production content. It is documented as idempotent and a no-op on fresh installs — so the blast radius is contained to estates that predate v0.6.6 — but it still warrants a backup, a staging rehearsal, and a post-deploy check that media URLs resolve.aiDocument in v0.7.1 stands: AI/document handling is not part of the core media surface. If AI-driven tagging or document intelligence is on your roadmap, treat it as a separate build decision.Adopt when:
Look elsewhere or proceed carefully when:
aiDocument removal suggests that's out of scope.Caveat: This assessment is based on the v0.7.1 and v0.7.3 release notes only. Validate against the README, test coverage, issue tracker, and release cadence before committing — the pattern of install-path corrections is a yellow flag worth confirming against the issue tracker.
To executives: "We can buy a media management layer instead of building one. It's an actively maintained Laravel package, and the last two patches have both been deployment-path fixes — a responsive maintainer, and evidence they're hardening the upgrade story rather than adding scope. The trade-off is maturity: it's pre-1.0, upgrades occasionally require a deliberate migration step rather than a one-line version bump, and the latest patch fixes a case where skipped versions left images returning errors in production. Low cost to trial, easy to contain in one module, and we should budget a small, scheduled maintenance allowance per upgrade rather than expecting zero-touch."
To engineering: "v0.7.3 restores migration 2026_10_01_000001_move_generated_media_directories, which relocates .thumbnails/.variants to _thumbnails/_variants and rewrites stored paths. It matters if you're coming from anything before v0.6.6 — those installs served thumbnails out of a dot-directory that stock Forge nginx 403s. It's idempotent and a no-op on fresh installs. Before merging: back up the media table, rehearse on a staging copy of production data, confirm no code or config references the old .thumbnails/.variants paths, and verify media URLs resolve after the run. Upgrade incrementally rather than leaping minor versions, and keep the version pinned with upgrades on a calendar. Treat it as a candidate dependency for the media/uploads module, pending a short source review of test coverage and release cadence."
How can I help you explore Laravel packages today?