PHPackages                             profscode/media-management - 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. profscode/media-management

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

profscode/media-management
==========================

Profscode Media Management is a streamlined media handling package designed to intelligently process, store, and retrieve uploaded images. It can automatically resize images during upload, generate multiple variations, optimize file names, and associate media with models for easy access. Inspired by Spatie’s Media Library, it offers a similar developer experience with a simpler, more extensible structure tailored to project-specific needs.

v1.0.3(5mo ago)014MITPHPPHP ^8.1 || ^8.2 || ^8.3 || ^8.4

Since Nov 22Pushed 5mo agoCompare

[ Source](https://github.com/YamanHafez/profscode-media-management)[ Packagist](https://packagist.org/packages/profscode/media-management)[ RSS](/packages/profscode-media-management/feed)WikiDiscussions main Synced 1mo ago

READMEChangelogDependencies (1)Versions (7)Used By (0)

What Is Profscode Media Management?
-----------------------------------

[](#what-is-profscode-media-management)

This package provides media/file management for your Laravel models. It stores files in a model-based directory structure, generates conversions (thumbnails/webp), and provides convenient URL access.

---

Installation
------------

[](#installation)

```
composer require profscode/media-management

```

### 1. Use Trait in Your Model

[](#1-use-trait-in-your-model)

```
use Profscode\MediaManagement\MediaManagement;

class User extends Model
{
    use MediaManagement;
}
```

---

ProfscodeMedia Model Structure
------------------------------

[](#profscodemedia-model-structure)

This model keeps metadata about uploaded media files.

### Fields

[](#fields)

FieldDescriptionmodel\_idRelated model IDmodel\_typeModel class namecollectionCollection name (avatar, gallery, etc.)original\_nameOriginal uploaded filenamenameStored filenamemime\_typeMIME typediskLaravel storage disksizeFile sizeconversionsJSON containing thumbnails and webp paths---

addMediaFromRequest Usage
-------------------------

[](#addmediafromrequest-usage)

```
$user = User::find(1);
$user->addMediaFromRequest("profile_picture", "avatars");
```

Requires:

```

```

### Optional conversion structure:

[](#optional-conversion-structure)

```
[
    "admin_panel" => [
        "width" => 100,
        "height" => 100,
        "webp" => true
    ]
]
```

---

addMediaFromUrl Usage
---------------------

[](#addmediafromurl-usage)

```
$user->addMediaFromUrl("https://domain.com/image.jpg", "gallery");
```

or

```
$conversions = [
    "admin_panel" => [
        "width" => 100,
        "height" => 100,
        "webp" => true
    ]
]
$user->addMediaFromUrl("https://domain.com/image.jpg", "gallery", $conversions);
```

---

Retrieving Media (Relation)
---------------------------

[](#retrieving-media-relation)

```
$user->getMedia();
```

retrive Media as Collection

---

getUrl Usage
------------

[](#geturl-usage)

### Original URL:

[](#original-url)

```
$media->getFirstMediaUrl($collection = "default");
```

### Thumbnail or WebP:

[](#thumbnail-or-webp)

```
$media->getFirstMediaUrl($collection , 'admin_panel');
```

---

getFirstMediaUrl Usage
----------------------

[](#getfirstmediaurl-usage)

```
$user->getFirstMediaUrl("avatars", "admin_panel");
```

---

Storage Structure
-----------------

[](#storage-structure)

```
storage/app/public/media/{ModelType}/{ModelId}/{collection}/{filename.ext}

```

---

License
-------

[](#license)

MIT © Profscode

---

Support
-------

[](#support)

For issues, please open a GitHub Issue.

###  Health Score

37

—

LowBetter than 83% of packages

Maintenance70

Regular maintenance activity

Popularity6

Limited adoption so far

Community6

Small or concentrated contributor base

Maturity57

Maturing project, gaining track record

 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 ~2 days

Total

6

Last Release

168d ago

Major Versions

v0.2 → v1.0.02025-11-24

### Community

Maintainers

![](https://www.gravatar.com/avatar/2a222ca8933c72c3fc3715d66edac5ea7450656a7051af0b0a408b968ab6ac12?d=identicon)[YamanHafez](/maintainers/YamanHafez)

---

Top Contributors

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

### Embed Badge

![Health badge](/badges/profscode-media-management/health.svg)

```
[![Health](https://phpackages.com/badges/profscode-media-management/health.svg)](https://phpackages.com/packages/profscode-media-management)
```

###  Alternatives

[spatie/laravel-image-optimizer

Optimize images in your Laravel app

1.3k6.5M43](/packages/spatie-laravel-image-optimizer)[justbetter/statamic-image-optimize

Image optimization after upload

1315.2k](/packages/justbetter-statamic-image-optimize)[folour/flavy

FFmpeg layer for Laravel 5.2-5.4, this is a fork of rafasamp/sonus package

279.6k](/packages/folour-flavy)[sukohi/surpass

A PHP package mainly developed for Laravel to manage uploading images using Ajax and displaying thumbnail.

283.8k](/packages/sukohi-surpass)

PHPackages © 2026

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