PHPackages                             unopim/dam - 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. [File &amp; Storage](/categories/file-storage)
4. /
5. unopim/dam

ActiveLibrary[File &amp; Storage](/categories/file-storage)

unopim/dam
==========

Unopim Digital Asset Management (DAM) is a flexible solution for managing digital assets in the Unopim PIM ecosystem. Key features include file and directory management, asset upload, preview, and deletion, advanced metadata tagging, collaboration tools, and CSV/XLSX export/import for asset assignment.

v3.0.0(1w ago)261.6k↑485.7%27[2 issues](https://github.com/unopim/unopim-digital-asset-management/issues)[1 PRs](https://github.com/unopim/unopim-digital-asset-management/pulls)MITPHPPHP ^8.4CI passing

Since Dec 2Pushed 4d ago2 watchersCompare

[ Source](https://github.com/unopim/unopim-digital-asset-management)[ Packagist](https://packagist.org/packages/unopim/dam)[ RSS](/packages/unopim-dam/feed)WikiDiscussions master Synced 1w ago

READMEChangelog (7)Dependencies (3)Versions (19)Used By (0)

UnoPim Digital Asset Management (DAM)
=====================================

[](#unopim-digital-asset-management-dam)

UnoPim DAM is a flexible, open-source Digital Asset Management (DAM) system built on Laravel. It enables businesses to store, organize, and manage digital assets such as images, videos, documents, and more. The system is designed for seamless cross-team asset management. Key features include:

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

[](#requirements)

- **UnoPim**: the latest version. DAM **3.0.0** is built for the newest UnoPim, which runs on **Laravel 13** and **PHP 8.4**. If you are still on an older UnoPim (Laravel 12), please use DAM **2.x** instead.
- **PHP**: 8.4 or newer

### Optional system binaries (for media previews)

[](#optional-system-binaries-for-media-previews)

The asset grid generates first-frame thumbnails for videos and first-page thumbnails for PDFs. These need two CLI tools on the host. If they're missing the grid still works — it just falls back to the generic file-type icon and logs a warning to `storage/logs/laravel.log`.

ToolUsed forInstall (Debian/Ubuntu)Install (RHEL/Alma)macOS (Homebrew)`ffmpeg`Video thumbnails (`Jobs/GenerateVideoThumbnail`)`sudo apt-get install -y ffmpeg``sudo dnf install -y ffmpeg``brew install ffmpeg``poppler-utils` (`pdftoppm`)PDF thumbnails (`Jobs/GeneratePdfThumbnail`)`sudo apt-get install -y poppler-utils``sudo dnf install -y poppler-utils``brew install poppler`After installing, existing assets get their thumbnail lazily on the next thumbnail request — no manual backfill needed.

If you run UnoPim in Docker, add the same packages to your `apt-get install` line in `dockerfiles/fpm.Dockerfile` and `dockerfiles/q.Dockerfile` (the queue worker also needs them, since `GenerateVideoThumbnail` runs there when queued).

✨ Features
----------

[](#-features)

- **Asset Gallery Grid View**
    Browse and manage assets through a visual gallery grid, featuring filters and a search box for quick file access. Supports efficient organization with options for mass actions, including bulk delete.
- **Resource Editing**
    Add tags to assets for enhanced filtering in the gallery view, and apply custom properties such as copyright, source, author, and more. Users can also add comments and view linked resources associated with assets.
- **Linked Resources**
    Directly link related resources from the asset edit page, allowing for easier navigation and improved resource relevance.
- **Directory (Folder) Structure**
    Organize assets in a clear directory tree structure. Right-click to upload files, add directories, rename, delete, copy, and download folders as ZIP files. Files can be dragged and dropped between directories, with support for unlimited subdirectory creation.

[![Comprehensive File & Directory Management](https://github.com/unopim/temp-media/raw/92aa1fc9e1164339fa3f601eac71d15b7d08a9f8/UnoPim-DAM/directory-management.png)](https://github.com/unopim/temp-media/blob/92aa1fc9e1164339fa3f601eac71d15b7d08a9f8/UnoPim-DAM/directory-management.png)

- **Comprehensive Asset Operations**
    Perform key asset actions such as uploading, previewing, renaming, deleting, re-uploading, and downloading to meet team needs. Supports a wide range of file types, including images, CSV, XLSX, PDF, audio, and video files.

[![Advanced Asset Operations](https://github.com/unopim/temp-media/raw/92aa1fc9e1164339fa3f601eac71d15b7d08a9f8/UnoPim-DAM/asset-operations.png)](https://github.com/unopim/temp-media/blob/92aa1fc9e1164339fa3f601eac71d15b7d08a9f8/UnoPim-DAM/asset-operations.png)

- **Metadata and Tagging**
    Enhance asset searchability and organization by adding tags, custom properties, and embedded metadata.

[![Metadata and Tagging](https://github.com/unopim/temp-media/raw/92aa1fc9e1164339fa3f601eac71d15b7d08a9f8/UnoPim-DAM/metadata-tagging.png)](https://github.com/unopim/temp-media/blob/92aa1fc9e1164339fa3f601eac71d15b7d08a9f8/UnoPim-DAM/metadata-tagging.png)

- **Tag Management**
    Manage tags from a dedicated **DAM → Tags** page: a datagrid listing each tag with its asset count and creation date, with search, filters, sorting, inline edit/delete, and bulk delete. Tags can be created here and assigned to assets — individually or in bulk — from the gallery.
- **History Tracking**Maintain a complete history of changes made to assets, ensuring transparency and easy tracking of modifications over time [![History Tracking](https://github.com/unopim/temp-media/raw/92aa1fc9e1164339fa3f601eac71d15b7d08a9f8/UnoPim-DAM/history.png)](https://github.com/unopim/temp-media/blob/92aa1fc9e1164339fa3f601eac71d15b7d08a9f8/UnoPim-DAM/history.png)
- **Collaboration and Resource Linking**
    Enable multi-user comments and resource linking for effective team collaboration on assets.

[![Collaboration and Resource Linking](https://github.com/unopim/temp-media/raw/92aa1fc9e1164339fa3f601eac71d15b7d08a9f8/UnoPim-DAM/collaboration.png)](https://github.com/unopim/temp-media/blob/92aa1fc9e1164339fa3f601eac71d15b7d08a9f8/UnoPim-DAM/collaboration.png)

- **Asset Detail Export in Product CSV**
    Export asset details as part of the product CSV export job, enabling smooth data transfer and management by including asset information directly in product CSV files.

[![Asset Assignment via Export / Import](https://github.com/unopim/temp-media/raw/92aa1fc9e1164339fa3f601eac71d15b7d08a9f8/UnoPim-DAM/asset-assignment.png)](https://github.com/unopim/temp-media/blob/92aa1fc9e1164339fa3f601eac71d15b7d08a9f8/UnoPim-DAM/asset-assignment.png)

- **Secure Asset Handling**
    Uploads reject executable and HTML/script file types, and stored files are served with safe content types so they never execute inline in the browser. Bulk delete, property mass-delete, and folder uploads enforce the same per-directory permissions as their single-item counterparts.

Installation with Composer
--------------------------

[](#installation-with-composer)

- Run the following command:

    ```
    composer require unopim/dam
    ```
- Run the command to execute migrations and clear the cache:

    ```
    php artisan dam-package:install;
    php artisan optimize:clear;
    ```
- Start the queue to execute actions, such as job operations, by running the following command:

    ```
      php artisan queue:work
    ```
- If the queue:work command is managed by a process manager like Supervisor, restart the relevant service after installing the module to apply the changes. Replace unopim-worker with your actual worker name, if different:

    ```
    sudo supervisorctl restart unopim-worker
    ```

Installation without Composer
-----------------------------

[](#installation-without-composer)

To manually install UnoPim DAM:

1. **Download and Setup the Extension**

    - Download and unzip the extension.
    - Rename the folder to `DAM` and place it in the `packages/Webkul` directory within the project's root.
2. **Register the Package Provider**

    - Add the following to `bootstrap/providers.php`:
        - At the top, add the use statement: ```
            use Webkul\DAM\Providers\DAMServiceProvider;
            ```
        - In the return array, in the Webkul package service providers section, add: ```
            DAMServiceProvider::class,
            ```
3. **Update Autoload Configuration**

    - Register the DAM directory in `composer.json` under `autoload` `psr-4`: ```
        "Webkul\\DAM\\": "packages/Webkul/DAM/src"
        ```
4. **Run Installation Commands**

    - Execute these commands to complete the installation: ```
        composer dump-autoload
        php artisan dam-package:install;
        ```
5. **Enable Queue Operations**

    - Start the queue to execute actions, such as job operations, by running the following command: ```
          php artisan queue:work
        ```
    - If the queue:work command is managed by a process manager like Supervisor, restart the relevant service after installing the module to apply the changes. Replace unopim-worker with your actual worker name, if different: ```
        sudo supervisorctl restart unopim-worker
        ```

📦 DAM Asset Migration to AWS S3
-------------------------------

[](#-dam-asset-migration-to-aws-s3)

This Laravel Artisan command is used to **migrate DAM asset files** from the **local private disk** to **AWS S3 storage**. It supports migrating all files or only newly uploaded ones, and optionally deleting local files after successful migration.

### 🛠 Command Signature

[](#-command-signature)

```
php artisan unopim:dam:move-asset-to-s3
```

### 🔐 Authentication

[](#-authentication)

To execute this command, valid admin credentials are required:

- You'll be prompted to enter your **email** and **password**.
- Access is granted only if the credentials match an admin user.

### 🧭 Options Prompts

[](#-options-prompts)

During execution, the command will prompt you to choose:

- **Migrate only new files?**If `yes`, only assets not already present on S3 will be migrated.
- **Delete files from local disk after uploading?**If `yes`, local files will be deleted after successful transfer to S3.

### 📋 Example Workflow

[](#-example-workflow)

```
php artisan unopim:dam:move-asset-to-s3
```

🗂 Demo Data
-----------

[](#-demo-data)

Seed sample directories and assets to explore DAM without uploading your own files.

### Command

[](#command)

```
php artisan dam:demo-data
```

Seeds a set of demo directories (Accessories, Audio and Video, Clothes, Documents) with sample images and documents. The command is **idempotent** — running it twice does nothing if data is already present.

### Re-seed from scratch

[](#re-seed-from-scratch)

```
php artisan dam:demo-data --force
```

Clears all assets and directories under `assets/Root/` and re-seeds from scratch. The command prompts for confirmation (defaults to **No**) before deleting anything.

### During installation

[](#during-installation)

`php artisan dam-package:install` asks whether to seed demo data as the final step, after migrations and asset publishing are complete.

📬 Postman API Collection
------------------------

[](#-postman-api-collection)

To interact with UnoPim DAM's API, you can use our official Postman collection:

[UnoPim DAM APIs Documentation](https://documenter.getpostman.com/view/4385199/2sBXVhEWjQ)

[UnoPim DAM APIs on Postman](https://www.postman.com/unopim/unopim-apis/collection/4385199-086948c4-9e81-4271-abb7-6d6995a67304?ctx=info)

### API Support

[](#api-support)

- **Directories Management Endpoints:**

    - **Create Directory:** `POST /api/v1/rest/directories`
    - **Update Directory:** `PUT /api/v1/rest/directories/{directory_id}`
    - **Delete Directory:** `DELETE /api/v1/rest/directories/{directory_id}`
    - **List Directories:** `GET /api/v1/rest/directories`
- **Assets Management Endpoints:**

    - **Upload Asset:** `POST /api/v1/rest/assets`
    - **Update Asset Metadata:** `PUT /api/v1/rest/assets/{asset_id}`
    - **Get Embedded Metadata:** `GET /api/v1/rest/assets/{asset_id}/metadata`
    - **Delete Asset:** `DELETE /api/v1/rest/assets/{asset_id}`
    - **Download Asset:** `GET /api/v1/rest/assets/download/{asset_id}`
    - **List Assets:** `GET /api/v1/rest/assets?limit=100&page=1`

Tag (single + bulk assign/remove, delete) and Share (create, list, revoke, reauthorize, delete) endpoints are included in the collection.

Updating (manual install)
-------------------------

[](#updating-manual-install)

From the Unopim project root:

```
bash packages/Webkul/DAM/upgrade-dam.sh

```

This fetches the latest release of `unopim/unopim-digital-asset-management`, swaps `packages/Webkul/DAM` (code only — your DB and asset files are untouched), then runs `php artisan dam:update`, which backs up DAM tables + asset files, runs migrations, republishes assets, and verifies no data was lost. Back up first if you can.

Restore a backup with:

php artisan dam:update:restore

Composer installs update with `composer update unopim/dam && php artisan dam:update`.

###  Health Score

57

—

FairBetter than 98% of packages

Maintenance97

Actively maintained with recent releases

Popularity34

Limited adoption so far

Community22

Small or concentrated contributor base

Maturity65

Established project with proven stability

 Bus Factor1

Top contributor holds 68% 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 ~102 days

Recently: every ~28 days

Total

7

Last Release

12d ago

Major Versions

v1.0.0 → v2.0.02026-04-10

v2.2.0 → v3.0.02026-08-05

PHP version history (2 changes)v2.0.0PHP ^8.3

v3.0.0PHP ^8.4

### Community

Maintainers

![](https://avatars.githubusercontent.com/u/282263096?v=4)[navneetbhardwaj](/maintainers/navneetbhardwaj)[@NavneetBhardwaj](https://github.com/NavneetBhardwaj)

---

Top Contributors

[![vipinkutthi-webkul](https://avatars.githubusercontent.com/u/273104010?v=4)](https://github.com/vipinkutthi-webkul "vipinkutthi-webkul (215 commits)")[![navneetkumar-pim-webkul](https://avatars.githubusercontent.com/u/26001046?v=4)](https://github.com/navneetkumar-pim-webkul "navneetkumar-pim-webkul (53 commits)")[![mrprince-webkul](https://avatars.githubusercontent.com/u/210351267?v=4)](https://github.com/mrprince-webkul "mrprince-webkul (21 commits)")[![devraj-jaiswal](https://avatars.githubusercontent.com/u/252315967?v=4)](https://github.com/devraj-jaiswal "devraj-jaiswal (9 commits)")[![devansh-pal-webkul](https://avatars.githubusercontent.com/u/153480042?v=4)](https://github.com/devansh-pal-webkul "devansh-pal-webkul (8 commits)")[![vipin-yadav-webkul](https://avatars.githubusercontent.com/u/153269757?v=4)](https://github.com/vipin-yadav-webkul "vipin-yadav-webkul (3 commits)")[![dependabot[bot]](https://avatars.githubusercontent.com/in/29110?v=4)](https://github.com/dependabot[bot] "dependabot[bot] (2 commits)")[![abhishekverma-webkul](https://avatars.githubusercontent.com/u/194934707?v=4)](https://github.com/abhishekverma-webkul "abhishekverma-webkul (2 commits)")[![kunal-webkul](https://avatars.githubusercontent.com/u/111128645?v=4)](https://github.com/kunal-webkul "kunal-webkul (1 commits)")[![pravat-senapati](https://avatars.githubusercontent.com/u/190098028?v=4)](https://github.com/pravat-senapati "pravat-senapati (1 commits)")[![utkarshumrao-webkul](https://avatars.githubusercontent.com/u/175584804?v=4)](https://github.com/utkarshumrao-webkul "utkarshumrao-webkul (1 commits)")

---

Tags

asset-managementasset-taggingdamdigital-asset-managementdigital-assetsfile-managementlaravelmedia-managementmetadata-managementopen-sourcephp

### Embed Badge

![Health badge](/badges/unopim-dam/health.svg)

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

###  Alternatives

[unisharp/laravel-filemanager

A file upload/editor intended for use with Laravel 5 to 10 and CKEditor / TinyMCE

2.2k3.6M90](/packages/unisharp-laravel-filemanager)[unopim/unopim

UnoPim Laravel PIM

10.8k2.5k](/packages/unopim-unopim)[code16/sharp

Laravel Content Management Framework

79466.1k10](/packages/code16-sharp)[october/rain

October Rain Library

1601.7M103](/packages/october-rain)[symfony/ux-cropperjs

Cropper.js integration for Symfony

19376.7k3](/packages/symfony-ux-cropperjs)[mmes-design/filament-file-manager

A beautiful file manager plugin for Filament. Browse, upload, rename, move and delete files with ease.

163.8k](/packages/mmes-design-filament-file-manager)

PHPackages © 2026

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