@antelopejs/dms-media
A media library for the AntelopeJS DMS: uploads, folders, image sizes and light editing.

What it does
- Organises images, videos and documents in a Finder-style explorer, with smart views, search, drag and drop and bulk actions.
- Uploads files straight to the project's file storage and delivers them from stable
/media/<id>/<name>URLs. - Renders named image sizes on first request, with crop and rotation that can revert to the original.
- Applies per-folder rights built on the DMS permissions and roles.
- Adds an
AssetTypeform field, from@antelopejs/interface-dms-media, that opens the library as a picker on your pages. - Lets a project ship folders and files as code with
EnsureMediaFolderandImportMediaAsset, created once and never overwriting what members changed.
Install
Run the AntelopeJS CLI from the root of a project that already loads @antelopejs/dms and a file storage module:
ajs project modules add @antelopejs/dms-media
Quick start
Point the module's links at the API's public URL, and allow the dashboard's origin, since the browser uploads straight to the storage:
// antelope.config.ts
"dms-media": {
source: { type: "package", package: "@antelopejs/dms-media", version: "^0.7.0" },
config: {
publicBaseUrl: "${@api.API_PUBLIC_BASE_URL}",
},
},
api: {
config: {
cors: { allowedOrigins: ["https://dms.example.com"] },
},
},
Restart the backend, then the frontend, and open Modules › Media (/modules/media/overview). To let members pick files from your own pages, add an asset field:
import { AssetType } from "@antelopejs/interface-dms-media";
new AssetType({
mimetypes: ["image/*"],
binding: { id: "articles.cover", folderName: "Article covers", permissionsFromPage: ArticlesPage },
});
Compatibility
| Package | Supported | Tested with |
|---|---|---|
@antelopejs/interface-api | >=0.3.0 <1.0.0 | 0.3.0 |
@antelopejs/interface-api-util | >=0.3.0 <1.0.0 | 0.3.0 |
@antelopejs/interface-core | >=0.4.0 <1.0.0 | 0.4.0 |
@antelopejs/interface-database | >=0.3.0 <1.0.0 | 0.3.0 |
@antelopejs/interface-database-decorators | >=0.2.0 <1.0.0 | 0.2.0 |
@antelopejs/interface-dms | >=0.12.0 <1.0.0 | 0.12.0 |
@antelopejs/interface-dms-media | >=0.3.0 <0.4.0 | 0.3.1 |
@antelopejs/interface-file-storage | >=0.1.6 <1.0.0 | 0.1.6 |
The module also needs a DMS backend in a release that implements the @antelopejs/interface-dms range in the table above, and the @antelopejs/dms-frontend renderer in the range its frontend module declares in engines["@antelopejs/dms-frontend"] of frontend-vue/package.json. The ajs dms CLI refuses to build it with a renderer outside that range.
- File storage: an
@antelopejs/interface-file-storageimplementation, such as@antelopejs/file-storage-local.
Documentation
The guide's sources live in packages/dms-media/docs. The module ships the dms-media Claude Code skill in packages/dms-media/skills, declared under antelopeJs.skills.
Contributing
This package lives in the AntelopeJS/dms-media pnpm workspace, next to @antelopejs/interface-dms-media. Read CONTRIBUTING.md and the repository README for the development commands.