Search by

unopim / dam

navneetbhardwaj

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 assignme

v3.1.0 2026-09-16 15:33 UTC

This package is auto-updated.

Last update: 2026-09-16 15:43:56 UTC


README

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

  • UnoPim: the latest version. DAM 3.x 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)

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.

Tool Used for Install (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

  • 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

  • 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

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

Metadata and Tagging

  • 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.

  • AI Auto-Tagging
    Optionally tag newly uploaded images automatically using a vision-capable Magic AI platform. Enable it under DAM → Configuration → AI Tagging, pick the platform and the maximum number of tags per image. Tagging runs as its own rate-limited queued job, so it never delays the upload itself, and only applies for admins holding both the asset-update and tag-create permissions. Disabled by default; see AI Auto-Tagging for the settings.

AI Auto-Tagging

  • History Tracking Maintain a complete history of changes made to assets, ensuring transparency and easy tracking of modifications over time History Tracking

  • Collaboration and Resource Linking
    Enable multi-user comments and resource linking for effective team collaboration on assets.

Collaboration and Resource Linking

  • 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

  • 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

  • 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
  • By default all DAM jobs run on the default queue, so the command above is all you need. To isolate DAM's workload (fast DB housekeeping, filesystem/DB-tree bulk operations, and CPU-heavy media processing) onto dedicated queues instead, set DAM_QUEUE_DAM, DAM_QUEUE_BULK, and DAM_QUEUE_MEDIA in .env (e.g. to dam, dam-bulk, dam-media) and point a worker at them:

      php artisan queue:work --queue=default,dam,dam-bulk,dam-media
  • 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

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
    • By default all DAM jobs run on the default queue, so the command above is all you need. To isolate DAM's workload (fast DB housekeeping, filesystem/DB-tree bulk operations, and CPU-heavy media processing) onto dedicated queues instead, set DAM_QUEUE_DAM, DAM_QUEUE_BULK, and DAM_QUEUE_MEDIA in .env (e.g. to dam, dam-bulk, dam-media) and point a worker at them:
        php artisan queue:work --queue=default,dam,dam-bulk,dam-media
    • 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

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

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

🔐 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

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

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

🗂 Demo Data

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

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

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

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

🤖 AI Auto-Tagging

Automatically suggests tags for newly uploaded images using a vision-capable Magic AI platform (OpenAI, Gemini, Ollama and other providers that accept image input). It is disabled by default.

When enabled, the image is sent to the AI platform you configure. Only enable it if sending your assets to that provider is acceptable for your data policy.

Enabling it

  1. Add a vision-capable platform under Settings → Magic AI → Platforms.
  2. Go to DAM → Configuration → AI Tagging, switch Auto-tag assets with AI on, and choose the platform, the maximum tags per image and the rate limit.

Only admins holding both the asset update and tag create permissions trigger tagging, and tagging runs on the queue (default unless DAM_QUEUE_MEDIA is set — see Installation with Composer) — make sure a worker is listening to it. Each run is reported on the core Job Tracker page, with failures written to the downloadable job log.

Environment defaults

These act as the defaults before anything is saved on the Configuration page (values saved there win). Only the file-size cap is env-only.

Variable Default Purpose
DAM_AI_TAGGING_ENABLED false Turns auto-tagging on.
DAM_AI_TAGGING_PLATFORM_ID (unset) Magic AI platform to use; falls back to the active default platform.
DAM_AI_TAGGING_MAX_TAGS 8 Maximum tags suggested per image (1–20).
DAM_AI_TAGGING_RATE_LIMIT_PER_MINUTE 60 Tagging jobs allowed per minute (1–120), to stay inside your provider's quota.
DAM_AI_TAGGING_MAX_FILE_SIZE 10485760 Bytes; images larger than this are skipped instead of being read into memory and base64-encoded. 0 disables the cap.

📬 Postman API Collection

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

UnoPim DAM APIs Documentation

UnoPim DAM APIs on Postman

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)

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.