
A full-featured media manager for Laravel Filament. Upload, browse, crop, and serve images and files from any Laravel filesystem disk — all within your Filament admin panel. Made with care by CodeZone.

Media model; the package derives the table name automaticallycomposer require codezone/filament-mediazone
php artisan vendor:publish --tag=mediazone-migrations
php artisan migrate
php artisan vendor:publish --tag=mediazone-config
This creates config/media.php. See the Configuration docs for all available options.
php artisan filament:assets
Run this once after install and again after each upgrade.
Add MediaZonePlugin to your Filament panel provider:
use Codezone\MediaZone\MediaZonePlugin;
public function panel(Panel $panel): Panel
{
return $panel
->plugins([
MediaZonePlugin::make(),
]);
}
Add a media disk to config/filesystems.php (or point MEDIA_FILESYSTEM_DISK to an existing disk):
'media' => [
'driver' => 'local',
'root' => storage_path('app/public/media'),
'url' => env('APP_URL').'/storage/media',
'visibility' => 'public',
],
After installation, navigate to Content → Media in your Filament panel. Upload files via the Create button or drag-and-drop.
To add a media picker to any Filament form:
use Codezone\MediaZone\Forms\Components\MediaPicker;
MediaPicker::make('image_id')
->label('Featured Image'),
For full usage — including crop presets, locations, multi-select, and custom models — see the documentation.
![]() |
![]() |
![]() |
![]() |
The package is developed as part of a Laravel application using ddev. If you are working within that monorepo, the environment is already running. For standalone development, install dependencies directly:
# PHP dependencies
composer install
# Node dependencies
npm install
vendor/bin/phpunit
Tests use Orchestra Testbench and run against both Laravel 11 and 12. The CI matrix covers PHP 8.2 and 8.3.
All three linters must pass before a PR can merge.
# Check only (what CI runs)
vendor/bin/pint --test
npm run eslint
npm run stylelint
# Auto-fix
vendor/bin/pint
npm run eslint:fix
npm run stylelint:fix
# Fix everything at once
npm run fix
Code style follows the Laravel Pint preset with declare_strict_types enforced. JavaScript follows the ESLint config in eslint.config.js. CSS follows the Stylelint BEM pattern config.
mainvendor/bin/phpunit, vendor/bin/pint --test, npm run eslint, and npm run stylelint all passmain — CI will run automaticallyDocumentation lives in Writerside/topics/ as Markdown files and is built with JetBrains Writerside. It is automatically deployed to GitHub Pages on every push to main. Edit the topic files and the build will update on merge.
CodeZone is a web development studio specializing in Laravel, Filament, and modern PHP applications. We build tools and packages that help developers ship great products faster.
Filament MediaZone is free and open source. If it saves you time, consider supporting ongoing development via PayPal.
MIT — see LICENSE for details.
How can I help you explore Laravel packages today?