PHPackages                             elysiumrealms/imageable - 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. [Database &amp; ORM](/categories/database)
4. /
5. elysiumrealms/imageable

ActiveLibrary[Database &amp; ORM](/categories/database)

elysiumrealms/imageable
=======================

Imageable Eloquent Model Extension

1.4.0(1y ago)0401MITPHPPHP ^7.3|^8.0

Since Feb 24Pushed 1y ago1 watchersCompare

[ Source](https://github.com/elysiumrealms/imageable)[ Packagist](https://packagist.org/packages/elysiumrealms/imageable)[ Docs](https://github.com/elysiumrealms/imageable)[ RSS](/packages/elysiumrealms-imageable/feed)WikiDiscussions master Synced 1mo ago

READMEChangelogDependencies (2)Versions (8)Used By (0)

Imageable Upload System
=======================

[](#imageable-upload-system)

A module for uploading and managing images.

Installation Guide
------------------

[](#installation-guide)

Install the package using Composer.

```
composer require elysiumrealms/imageable
```

Run the migrations.

```
php artisan migrate
```

Implementation Guide
--------------------

[](#implementation-guide)

Use the `ImageableTrait` trait to your model.

```
use Elysiumrealms\Imageable;

class User extends Model
implements Imageable\Contracts\Imageable
{
    use Imageable\Traits\ImageableTrait;

    ...
}
```

Schedule the `imageable:prune` command to prune deleted images.

```
function schedule(Schedule $schedule)
{
    $schedule->command('imageable:prune')
        ->onOneServer()
        ->daily();
}
```

Storage Mode Configuration
--------------------------

[](#storage-mode-configuration)

The imageable module supports two storage modes:

### ***Proxy Forwarding Mode***

[](#proxy-forwarding-mode)

Images are stored locally on the backend server or ***AWS S3 Bucket***, access all images through `imageable/{image}` route.

 ```
graph LR;
    A[Browser] --> B[Reverse Proxy];
    B --> C[Backend];
    C -->|Read Local Image File| D[File System];
    D --> C
    C --> B;
    B --> A;

    A[Browser] --> B[Reverse Proxy];
    B --> C[Backend];
    C -->|Http Request| E[AWS S3 Bucket];
    E --> C;
    C --> B;
    B --> A;
```

      Loading The ***Proxy Forwarding Mode*** is designed for cases where ***AWS S3 Bucket*** is not available or when the system is not yet deployed to a production environment. In production, the ***Direct Storage Mode*** is preferred to reduce backend system I/O and improve performance.

### ***Direct Storage Mode*** (Recommended for Production)

[](#direct-storage-mode-recommended-for-production)

Images are stored in an ***AWS S3 Bucket***, and the system returns the full ***AWS S3 Bucket*** URL or file path for access.

 ```
graph LR;
    A[Browser] --> B[AWS S3 Bucket];
    B --> A;

    A[Browser] --> C[Reverse Proxy];
    C -->|Read Local Image File| D[File System];
    D --> C;
    C --> A;
```

      Loading In direct ***Direct Storage Mode*** mode, all images will be served directly from ***AWS S3 Bucket*** or file path on the backend server.

Deployment Considerations
-------------------------

[](#deployment-considerations)

### **Development/Test Environments**

[](#developmenttest-environments)

- Use ***Proxy Forwarding Mode*** to simulate image retrieval before setting up ***AWS S3 Bucket***.

### **Production Environment**

[](#production-environment)

- Use ***Direct Storage Mode*** to reduce backend load and improve performance.
- Set the ***Storage Mode*** through `IMAGEABLE_DRIVER` environment variable to desired driver.

Configuration
-------------

[](#configuration)

- When using ***Direct Storage Mode*** and `s3` driver, ensure proper ***AWS S3 Bucket*** permissions and bucket policies.
- Configure reverse proxy rules to handle image routing when using ***Proxy Forwarding Mode***.

Usage Guide
-----------

[](#usage-guide)

- Upload images through the `POST /api/v1/imageable/{collection}` route.

    ```
    curl -X POST http://localhost:8000/api/v1/imageable/default \
        -H "Authorization: Bearer {token}" \
        -H "Content-Type: multipart/form-data" \
        -F "images[]=@/path/to/your/xxx_01.jpg" \
        -F "images[]=@/path/to/your/xxx_02.jpg" \
        -F "images[]=@/path/to/your/xxx_03.jpg"
    ```
- Delete images through the `DELETE /api/v1/imageable` route.

    ```
    curl -X DELETE http://localhost:8000/api/v1/imageable/ \
        -H "Authorization: Bearer {token}"
        -H "Content-Type: application/json"
        -d '{"images": ["xxx_01.jpg", "xxx_02.jpg", "xxx_03.jpg"]}'
    ```
- Get images paginated through the `GET /api/v1/imageable` route.

    ```
    curl -X GET http://localhost:8000/api/v1/imageable \
        -H "Authorization: Bearer {token}"
        -H "Content-Type: application/json"
        -d '{"page": 1, "per_page": 10}'
    ```
- Access the images through the `images` relationship.

    ```
    User::find(1)->images;
    ```

For further details, please contact the development team.

###  Health Score

30

—

LowBetter than 64% of packages

Maintenance46

Moderate activity, may be stable

Popularity12

Limited adoption so far

Community7

Small or concentrated contributor base

Maturity47

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

Total

7

Last Release

412d ago

### Community

Maintainers

![](https://www.gravatar.com/avatar/4023f1cff0b6485985efd20bb82d44644dbbe6e58729900611e941000e3eb0bd?d=identicon)[deflinhec](/maintainers/deflinhec)

---

Top Contributors

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

---

Tags

modeleloquentextensionimageableelysiumrealms

### Embed Badge

![Health badge](/badges/elysiumrealms-imageable/health.svg)

```
[![Health](https://phpackages.com/badges/elysiumrealms-imageable/health.svg)](https://phpackages.com/packages/elysiumrealms-imageable)
```

###  Alternatives

[qcod/laravel-imageup

Auto Image upload, resize and crop for Laravel eloquent model using Intervention image

775113.8k](/packages/qcod-laravel-imageup)[rob-lester-jr04/eloquent-sales-force

An eloquent model data source for Salesforce

94479.8k1](/packages/rob-lester-jr04-eloquent-sales-force)[waad/laravel-model-metadata

A robust Laravel package for handling metadata with JSON casting, custom relation names, and advanced querying capabilities.

823.1k](/packages/waad-laravel-model-metadata)[adobrovolsky97/laravel-repository-service-pattern

Laravel 5|6|7|8|9|10 - Repository - Service Pattern

275.4k](/packages/adobrovolsky97-laravel-repository-service-pattern)

PHPackages © 2026

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