import type { CollectionConfig } from 'payload'; /** * Uploads land on a Docker named volume mounted at /app/media. The path is * absolute because Payload 3 requires it, and it must match the payload_media * mount in docker-compose.portainer.yml exactly — a mismatch writes into the * container's own filesystem, where the next redeploy silently discards it. */ export const Media: CollectionConfig = { slug: 'media', access: { read: () => true }, upload: { staticDir: '/app/media', mimeTypes: ['image/*'], imageSizes: [ { name: 'thumbnail', width: 400 }, { name: 'hero', width: 1200 }, ], adminThumbnail: 'thumbnail', }, fields: [ { name: 'alt', type: 'text', required: true, // Required rather than optional: a decorative-by-default image is an // accessibility regression on a site parents use under time pressure. admin: { description: 'Describe the image for screen readers.' }, }, ], };