Media

The media library stores uploaded files — images, videos, audio, documents. Files live in object storage (S3/MinIO); in the CMS, each file is a record of type media with a link to it.

Uploading files

Open Media in the sidebar. Two ways to upload:

  • The Upload file button — opens a file picker. You can select multiple.
  • Drag files anywhere on the window — a “Drop files to upload” overlay appears.

Files upload one at a time. After upload, the file appears in the thumbnail grid. Supported types: images, video, audio, documents (including PDF).

The media library grid

Files are shown as a grid of thumbnails: images as thumbnails, videos with hover autoplay, audio and documents as icons. Below each file — name and size.

Type filter: All / image / video / audio / document chips at the top.

Media details

Clicking a file opens the Media details panel. It shows:

  • A preview (for video — full player with controls, for PDF — a preview).
  • Read-only: type, size, MIME, dimensions (when present), URL.
  • Editable fields:
    • Name — the file’s display name.
    • Alt text — image description for accessibility. A localized field: a separate value per language.

The url, mime_type, file_size, and type fields are filled at upload and are not editable.

Deleting files

When deleting a file, the system shows where it is used. It finds every record that references the file (via Content type → Media fields) and shows a table: type, item, property.

  • If the reference is on a required field — after deletion the item cannot be saved until you attach a new file.
  • On confirm, all references are cleared automatically and the file is permanently deleted.

Using media in content

Media is attached to records via Content type → Media fields. Examples:

  • HeroSectionbackground_image (background image).
  • ImageBlockimage (required).
  • Galleryimages (array, required).
  • Authorphoto.
  • PageSEOog_image.

In the edit form, a media field shows a preview and two buttons: Choose from library (search + grid of existing files) and Upload file (upload a new one). The same interface appears wherever there is a media field.

Storage and URLs

Files are uploaded to S3-compatible storage as-is — no compression, resizing, or thumbnail generation. The file URL is absolute and points directly to the storage. The browser fetches the file directly, without proxying through the CMS.

Objects in the public bucket are anonymously readable — no signed URLs.

Storage limits

In SaaS mode, each project has a storage quota depending on the plan. The limit is checked on upload — if exceeded, the upload is rejected.

What’s next