webplusm/gallery-json-media
A Filament 4 JSON media field for images and documents, with a fluent API and Blade components for Laravel front-ends. Manage galleries, add custom properties, and render photos or document links easily.
JsonMediaGallery), table column (JsonMediaColumn), infolist entry (JsonMediaEntry/JsonDocumentsEntry), and Blade-facing fluent API — a clear "buy" for scoped, single-model galleries.images/documents JSON columns on the owning model. That is the right call for content pages, blog posts, product listings, portfolio items, and downloadable resource blocks where media is owned by one record — and the wrong call if you foresee cross-model reuse, deduplication, or media-level reporting.gallery-json-media:regenerate maintenance command for thumbnails and stored image dimensions. That is a roadmap-relevant signal: it makes a future Filament upgrade a maintenance task, not a rewrite — provided you declare models in maintenance.models and budget a regeneration run.Adopt when all of the following are true:
Look elsewhere when:
To executives (one paragraph): This is a free, MIT-licensed add-on for our Filament admin panel that gives editors a proper media experience — multi-image galleries, drag-to-reorder, cropped thumbnails, alt text and captions, and downloadable document lists — in days rather than a sprint or two of custom development. It is a small, reversible commitment: it stores media references in an existing JSON column, requires no new infrastructure, and is already maintained across current Filament and Laravel versions. The trade-off is deliberate and bounded: it handles public, per-record galleries, not enterprise asset management.
To engineering (framing and guardrails): A drop-in Filament field/column/infolist/Blade set backed by spatie/image, with a HasMedia + InteractWithMedia convention on the model, an auto-delete hook for orphaned thumbnails, and a gallery-json-media:regenerate command for dimensions and thumbnails after an upgrade. Constraints to design around: public visibility only, no S3, JSON-column storage, and a single-maintainer upstream. Mitigations: pin the version, avoid leaking Media objects into domain logic, define our own media interface so a swap to Spatie Media Library remains a contained refactor, and keep the regeneration command in the release checklist.
Risk statement to put on the record: Low adoption (19 stars, 0 dependents) and single-maintainer concentration mean we should treat this as a convenience dependency, not a strategic one. The package is well-documented, tested, changelogged, and actively version-tracked, which lowers day-one risk; the exit cost is contained because the data model is plain JSON and the integration surface is a handful of Filament components. If upstream maintenance stalls, a fork or a migration to Spatie Media Library is a scoped, plannable piece of work — not a re-platforming.
How can I help you explore Laravel packages today?