rectitude-open/filament-photos
A Filament plugin for managing photos and image galleries in your Laravel admin panel. Upload, organize, and display images alongside your Filament resources with a setup that fits naturally into the admin UI.
rectitude-open/filament-photos is a Filament plugin that gives you a ready-made photo library panel: PhotoResource, PhotoCategory and PhotoCluster resources, complete with navigation, breadcrumbs, titles and translated labels.
composer require rectitude-open/filament-photos
php artisan filament:assets # if the package ships assets
app/Providers/Filament/AdminPanelProvider.php):
->plugin(\RectitudeOpen\FilamentPhotos\FilamentPhotosPlugin::make())
Where to look first: the PhotoResource and PhotoCategoryResource classes (form/table definitions) and the lang/ directory — as of v1.9.0 all user-facing strings (breadcrumbs, page titles, resource labels) are routed through translation keys, which is the fastest way to see what the package exposes and what you can override.
Extending rather than editing. Subclass the package resources in your own app (php artisan make:filament-resource or by extending the vendor class) and register your subclass in the panel. Overriding the table/form methods keeps you upgrade-safe while letting you add fields like alt_text, credit or location.
Localization-driven UI. Since v1.9.0 breadcrumbs, titles and resource labels come from translation files. Publish them:
php artisan vendor:publish --tag=filament-photos-translations
Then override keys per locale instead of editing Blade/PHP. This is the supported way to rebrand "Photos" to "Media Library" or to add a locale the package doesn't ship yet.
Multi-panel / multi-tenant setups. Register the plugin only on the panels that need the library, and scope the resources by tenant or by a cluster_id column. The cluster → category → photo hierarchy maps naturally onto team- or project-scoped galleries.
Bulk operations. The table ships with bulk actions including Replicate (label fixed in v1.9.0). Use it for duplicating a photo with its metadata across categories, then chain your own BulkAction for tagging, publishing, or syncing to CDN/storage.
Integration with your own models. If photos need to attach to posts/products, add a MorphToMany or FK relation in a custom resource and use Filament's Select with relationship() — the package's own relations are a good template.
Navigation ordering. Configure clusters/categories/photos in the panel provider's navigation groups and sort so the library sits next to your content resources rather than buried at the bottom.
unique constraint or an observer if your storage path is derived from the record ID.php artisan filament:assets and php artisan optimize:clear after bumping the package, otherwise stale compiled CSS/JS or cached views mask the new labels.PhotoPolicy, PhotoCategoryPolicy and PhotoClusterPolicy (or a shared base policy) or every authenticated panel user can edit your library.navigationLabel, modelLabel or breadcrumb — v1.9.0 covers these, but custom columns/actions you added yourself need your own ->label(__('...')).configureUsing() hooks — in that order. Avoid editing vendor files; you'll lose it on the next patch.route() calls in your app.How can I help you explore Laravel packages today?