Weave Code
Weaver
Helps Laravel developers discover, compare, and choose open-source packages. See popularity, security, maintainers, and scores at a glance to make better decisions.
Feedback
Share your thoughts, report bugs, or suggest improvements.
Subject
Message

Filament Photos Laravel Package

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.

View on GitHub
Deep Wiki
Context7

Getting Started

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.

  1. Install into a Filament app:
    composer require rectitude-open/filament-photos
    php artisan filament:assets   # if the package ships assets
    
  2. Register the plugin on your panel (app/Providers/Filament/AdminPanelProvider.php):
    ->plugin(\RectitudeOpen\FilamentPhotos\FilamentPhotosPlugin::make())
    
  3. Run migrations if the package publishes them, then seed/import a few categories so the UI isn't empty on first look.
  4. First use case: log in, open Photos, upload an image, assign it to a category/cluster, and use the bulk Replicate action on two or three rows to confirm the workflow end-to-end.

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.

Implementation Patterns

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.

Gotchas and Tips

  • Translations aren't retroactive. If you copied language files before v1.9.0, re-publish and diff — the new breadcrumb/title keys won't appear in an old copy, and you'll silently keep hardcoded English labels.
  • Bulk replicate duplicates rows, not files. Depending on storage config, replicated records may point at the same underlying file; add a unique constraint or an observer if your storage path is derived from the record ID.
  • Asset publishing after upgrades. Run 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.
  • Authorization. Filament policies are not generated by the package; define PhotoPolicy, PhotoCategoryPolicy and PhotoClusterPolicy (or a shared base policy) or every authenticated panel user can edit your library.
  • Debugging missing labels. If a string is still hardcoded, check whether it's a navigationLabel, modelLabel or breadcrumb — v1.9.0 covers these, but custom columns/actions you added yourself need your own ->label(__('...')).
  • Extension points to prefer: plugin configuration closures, resource subclassing, published translations, and Filament's configureUsing() hooks — in that order. Avoid editing vendor files; you'll lose it on the next patch.
  • Watch the changelog for resource-name changes. Label changes are cosmetic today, but plural/singular resource slugs are the kind of thing that breaks bookmarked URLs and hardcoded route() calls in your app.
Weaver

How can I help you explore Laravel packages today?

Conversation history is not saved when not logged in.
Prompt
Add packages to context
No packages found.
jinas/dhivatar
store-doc/laravel-storage-driver
plus-it/laravel-translation-manager
diephp/perhaps
diephp/telegraph
osmaviation/spreadsheet
microsoft/fluentui-system-icons
mmccook/php-json-canonicalization-scheme
middlewares/firewall
qubiqx/montapacking
nyoncode/laravel-package-console
pnscripts/filament-broadquill-lite
pnscripts/laravel-sentfold-lite
vleap/mx-sdk-laravel-internal
twidpay/utils
htetmyathlaing/scout-elasticsearch-driver
artisan-toolbox/front-awesome
ls/client-assistant
users-au/laravel-client
cgv/localized-resource