Cloudinary — Gestión de imágenes
Cloudinary es el CDN de imágenes del proyecto. Sanity no almacena imágenes directamente — guarda únicamente el Public ID de Cloudinary, y el frontend construye la URL en tiempo de ejecución.
Cloudinary (almacén) → Public ID → Sanity (referencia) → Frontend (URL construida)Credenciales
Las variables de entorno necesarias ya están en apps/web/.env.local:
NEXT_PUBLIC_CLOUDINARY_CLOUD_NAME=dzs2mwbyc
CLOUDINARY_API_KEY=...
CLOUDINARY_API_SECRET=...El cloud name es el único valor que necesita el frontend para construir URLs públicas.
Subir una imagen
Desde el dashboard de Cloudinary
- Entra a cloudinary.com e inicia sesión
- Ve a Media Library en el menú lateral
- Navega a la carpeta destino (o crea una nueva, ej.
eventos/) - Haz clic en Upload → selecciona el archivo
- Espera a que termine la subida
Convención de carpetas
Organiza las imágenes por contexto para que los Public IDs sean predecibles:
| Carpeta | Contenido |
|---|---|
eventos/ | Imágenes de eventos (una por evento) |
home/ | Imágenes de secciones del home |
general/ | Logos, íconos, assets compartidos |
Obtener el Public ID
Después de subir la imagen:
- Haz clic en la imagen en Media Library
- En el panel derecho, copia el valor de Public ID
El Public ID incluye la ruta de carpeta:
eventos/yoga-restaurativo-mayoNo incluye la extensión del archivo (
.jpg,.webp, etc.) — Cloudinary la maneja automáticamente.
Usar el Public ID en Sanity
En el documento de Evento (o cualquier schema que use imágenes):
- Abre el documento en Studio
- Pega el Public ID en el campo
imagePublicId - Rellena
imageAltcon una descripción accesible
imagePublicId: "eventos/yoga-restaurativo-mayo"
imageAlt: "Participantes en posición de savasana durante el taller de yoga restaurativo"Cómo el frontend construye la URL
El frontend usa el cloud name + el Public ID para construir URLs de Cloudinary con transformaciones:
function cloudinaryUrl(publicId: string, opts?: { width?: number; quality?: number }) {
const { width = 800, quality = 80 } = opts ?? {};
return `https://res.cloudinary.com/dzs2mwbyc/image/upload/w_${width},q_${quality},f_auto/${publicId}`;
}Parámetros de transformación más usados
| Parámetro | Descripción | Ejemplo |
|---|---|---|
w_<n> | Ancho en píxeles | w_800 |
h_<n> | Alto en píxeles | h_600 |
c_fill | Recorta y llena el área definida | c_fill |
q_auto | Calidad automática (recomendado) | q_auto |
q_<n> | Calidad fija (0-100) | q_80 |
f_auto | Formato óptimo según el navegador (WebP, AVIF) | f_auto |
g_face | Centra el recorte en la cara detectada | g_face |
Ejemplo de URL completa
https://res.cloudinary.com/dzs2mwbyc/image/upload/w_1200,q_auto,f_auto/eventos/yoga-restaurativo-mayoReemplazar una imagen existente
Si necesitas actualizar la imagen de un evento sin cambiar el Public ID:
- En Media Library, haz clic en la imagen
- Selecciona Replace → sube la nueva versión
- Cloudinary invalida el caché automáticamente
Si cambias el Public ID (subes una imagen nueva con otro nombre):
- Sube la nueva imagen a Cloudinary
- Copia el nuevo Public ID
- Actualiza el campo
imagePublicIden el documento de Sanity - Publica el documento
Limpieza
Cloudinary no elimina imágenes automáticamente. Si borras un evento de Sanity, recuerda eliminar la imagen correspondiente en Media Library para evitar acumular assets huérfanos.