PHPackages                             kreetancraft/laravel-media-manager - PHPackages - PHPackages  [Skip to content](#main-content)[PHPackages](/)[Directory](/)[Categories](/categories)[Trending](/trending)[Leaderboard](/leaderboard)[Changelog](/changelog)[Analyze](/analyze)[Collections](/collections)[Log in](/login)[Sign up](/register)

1. [Directory](/)
2. /
3. [Image &amp; Media](/categories/media)
4. /
5. kreetancraft/laravel-media-manager

ActiveLibrary[Image &amp; Media](/categories/media)

kreetancraft/laravel-media-manager
==================================

Media manager for Laravel — folders, a drop-in picker, image editor and automatic WebP conversion. Livewire 4 + Flux UI.

0.4.0(today)08↑2525%MITPHPPHP ^8.2

Since Aug 28Pushed todayCompare

[ Source](https://github.com/Kreetancraft/laravel-media-manager)[ Packagist](https://packagist.org/packages/kreetancraft/laravel-media-manager)[ RSS](/packages/kreetancraft-laravel-media-manager/feed)WikiDiscussions main Synced today

READMEChangelogDependencies (14)Versions (5)Used By (0)

kreetancraft/laravel-media-manager
==================================

[](#kreetancraftlaravel-media-manager)

Media manager for Laravel — folders, a picker you drop into any form, an in-browser image editor, and automatic WebP conversion. **Livewire 4 + Flux UI**, built on `spatie/laravel-medialibrary`.

Standalone package. No `nwidart/laravel-modules`, no bundled CSS, no bundled layouts, no dependency on any particular user package.

```
composer require kreetancraft/laravel-media-manager
php artisan vendor:publish --tag=media-config
php artisan migrate
```

Point it at your layout and you're done:

```
// config/media.php
'layouts' => ['admin' => 'components.layouts.app'],
```

Documentation
-------------

[](#documentation)

[Getting started](docs/getting-started.md)Install, routes, components, the one gotcha[Attaching media to your models](docs/attaching-media.md)The trait, collections, the picker, uploads, URLs[Configuration reference](docs/configuration.md)Every key, and why it exists[Extending and replacing behaviour](docs/extending.md)Contracts, the avatar hook, publishing viewsFeatures
--------

[](#features)

**Library** — folder hierarchy with breadcrumbs, drag-free move between folders, bulk select and delete, filter by upload month, search.

**Picker** — `` in any form. Browse, upload, pick, done.

**Editor** — crop, rotate, flip, brightness, contrast. Saves a WebP variant over the auto conversion so serving keeps working.

**Attachments** — a many-to-many link, unlike Spatie's 1:1 ownership. One image can belong to many models; deleting a model drops its attachments and keeps the shared file.

```
$article->attachMedia($id, 'gallery');
$article->attachedMedia('gallery');   // Collection, sorted
$article->featuredUrl('webp');        // ?string
$article->syncAttachedMedia([$a, $b], 'gallery');
```

**WebP** — every upload gets a variant, queued. `media:reconvert-webp` backfills an existing library.

**Public serving** — `/assets/{path}` serves files by exact folder path, WordPress-style, with no enumerable listing surface.

Let Tailwind see this package
-----------------------------

[](#let-tailwind-see-this-package)

Required. Tailwind v4 generates only the classes it finds by scanning files, and it does not scan `vendor/`. In `resources/css/app.css`:

```
@source '../../vendor/kreetancraft/laravel-media-manager/resources/views';
```

Skipping it fails confusingly rather than loudly — classes shared with your own views still work and only the ones unique to this package go missing, which typically shows up as a light filter bar on a dark page.

Design decisions worth knowing
------------------------------

[](#design-decisions-worth-knowing)

**It ships no CSS and no layouts.** Screens render into *your* layout and inherit your Tailwind + Flux theme.

**It does not care which user model you have.** Uploaders resolve through `config('auth.providers.users.model')`; `MediaPolicy` type-hints `Authenticatable`.

**It names no permission of its own.** The screens ask the ordinary authorization question and `MediaPolicy` answers it. Until permissions exist anywhere in the app the library is open — it works on a bare Laravel install rather than failing closed on a dependency you never asked for.

**It adds its own sidebar link, without knowing what renders the sidebar.** The link is bound and tagged `admin.navigation`; anything collecting that tag picks it up. Install it beside [laravel-user-management](https://github.com/Kreetancraft/laravel-user-management)and a **Media** entry appears in the admin sidebar with nothing declared either way. Install it alone and the tag is simply never read.

**Routes are two independent switches.** Serve public assets while replacing the admin UI, or the reverse.

Requirements
------------

[](#requirements)

- PHP `^8.2`, Laravel `^12|^13`
- `livewire/livewire ^4`, `livewire/flux ^2`
- `spatie/laravel-medialibrary`, `spatie/image`, `spatie/laravel-query-builder`
- `livewire-filemanager/filemanager` — supplies the `Folder` model the hierarchy is built on

Testing
-------

[](#testing)

```
vendor/bin/pest
```

87 tests against `orchestra/testbench` on in-memory SQLite. `tests/fixtures`supplies the host application's user model, layout and routes, since this package deliberately ships none of them.

License
-------

[](#license)

MIT

###  Health Score

40

—

FairBetter than 86% of packages

Maintenance100

Actively maintained with recent releases

Popularity7

Limited adoption so far

Community6

Small or concentrated contributor base

Maturity39

Early-stage or recently created project

 Bus Factor1

Top contributor holds 100% of commits — single point of failure

How is this calculated?**Maintenance (25%)** — Last commit recency, latest release date, and issue-to-star ratio. Uses a 2-year decay window.

**Popularity (30%)** — Total and monthly downloads, GitHub stars, and forks. Logarithmic scaling prevents top-heavy scores.

**Community (15%)** — Contributors, dependents, forks, watchers, and maintainers. Measures real ecosystem engagement.

**Maturity (30%)** — Project age, version count, PHP version support, and release stability.

###  Release Activity

Cadence

Every ~0 days

Total

4

Last Release

0d ago

### Community

Maintainers

![](https://avatars.githubusercontent.com/u/201317768?v=4)[kritan rimal](/maintainers/kritaneducation)[@kritaneducation](https://github.com/kritaneducation)

---

Top Contributors

[![kritaneducation](https://avatars.githubusercontent.com/u/201317768?v=4)](https://github.com/kritaneducation "kritaneducation (4 commits)")

---

Tags

laravelmediafluxlivewiremedia library

###  Code Quality

TestsPest

Code StyleLaravel Pint

### Embed Badge

![Health badge](/badges/kreetancraft-laravel-media-manager/health.svg)

```
[![Health](https://phpackages.com/badges/kreetancraft-laravel-media-manager/health.svg)](https://phpackages.com/packages/kreetancraft-laravel-media-manager)
```

###  Alternatives

[nasirkhan/laravel-starter

A CMS like modular Laravel starter project.

1.4k2.7k](/packages/nasirkhan-laravel-starter)[typicms/base

A modular multilingual CMS built with Laravel, enabling developers to manage structured content like pages, news, events, and more.

1.6k20.4k](/packages/typicms-base)[tomshaw/electricgrid

A feature-rich Livewire package designed for projects that require dynamic, interactive data tables.

119.8k](/packages/tomshaw-electricgrid)

PHPackages © 2026

[Directory](/)[Categories](/categories)[Trending](/trending)[Changelog](/changelog)[Analyze](/analyze)
