Zest — Manual del Usuario
Zest es un diario culinario autohospedado que almacena tus recetas, recuerdos e historias alrededor de la mesa. Este manual cubre todo lo que necesitas saber para comenzar y aprovechar al máximo cada característica.
1. Instalación
Requisitos
- • Docker y Docker Compose instalados en tu máquina
- • Aproximadamente 200 MB de espacio en disco (imagen + dependencias)
- • Cualquier hardware: Raspberry Pi 4, NAS, laptop antiguo, VM en la nube — cualquier cosa que ejecute Docker
Inicio rápido
git clone https://github.com/MartinSantosT/myzest.git
cd myzest
cp .env.example .env
docker compose up -d
Abre http://localhost:8000 en tu navegador. Eso es todo.
Asegurar tu instancia
-
Cambia la clave secreta — Abre .env y reemplaza el valor predeterminado:
# Generate a secure key: python -c "import secrets; print(secrets.token_urlsafe(32))"Pega el resultado como ZEST_SECRET_KEY en tu archivo .env, luego reinicia:
docker compose down && docker compose up -d -
Cambia tu contraseña cuando quieras — ve a Configuración → Perfil dentro de la app. El primer usuario que se registra es el administrador y no hay credenciales compartidas o por defecto que rotar.
Puerto personalizado
Edita docker-compose.yml para cambiar el puerto:
ports:
- "3000:8000" # Access Zest on port 3000
Proxy inverso
Si estás exponiendo Zest a tu red local o a Internet, colócalo detrás de un proxy inverso (Nginx, Caddy, Traefik o Nginx Proxy Manager). Consulta el README para una configuración de Nginx de ejemplo.
2. Primeros pasos
Cuando iniques sesión por primera vez, Zest te muestra una breve experiencia de incorporación:
- Bienvenida — Introducción a la filosofía de Zest
- Tus recetas, tu historia — Cómo crear o importar tu primera receta
- Recuerdos — Lo que hace diferente a Zest: conectar fotos y momentos con recetas
Puedes omitir la incorporación en cualquier momento, o hacer clic en "Crear mi primer recuerdo" para comenzar de inmediato.
El panel de control
Después de la incorporación, verás el panel de control principal con:
- • Cuadrícula de recetas — Todas tus recetas mostradas como tarjetas con fotos, calificaciones y tiempos estimados
- • Barra lateral (izquierda) — Navegación entre Recetas, ¿Qué cocino?, Lista de compras, Recetarios, Recuerdos y Configuración
- • Barra de búsqueda — Filtra recetas por texto, categoría, etiqueta o calificación
- • Botón + Nueva Receta — Crea una nueva receta desde cero
3. Recetas
Creando una receta
- Haz clic en + Nueva Receta (o el botón naranja en la esquina superior derecha)
-
Completa los detalles:
- ◦ Título (requerido)
- ◦ Descripción — Una breve introducción o historia sobre el plato
- ◦ Tiempo de preparación y cocción — En minutos
- ◦ Porciones — Cuántas porciones hace la receta
- ◦ Foto — Haz clic en el área de imagen para cargar una foto principal. Puedes agregar hasta 4 fotos en total (1 principal + 3 adicionales)
-
Ingredientes — Agrega uno por fila. Cada ingrediente tiene campos estructurados:
- ◦ Cantidad (número)
- ◦ Unidad (tazas, gramos, cucharada, etc.)
- ◦ Nombre (el ingrediente en sí)
- ◦ Nota (opcional: "finamente picado", "a temperatura ambiente")
- Pasos — Agrega pasos de preparación en orden. Arrastra para reordenar si es necesario.
- Categorías y etiquetas — Asigna categorías y etiquetas codificadas por color (ver sección 4)
- Haz clic en Guardar
Editando una receta
Haz clic en cualquier tarjeta de receta para abrir su vista de detalles, luego haz clic en el botón Editar (lápiz). Todos los campos son editables. Los cambios se guardan cuando haces clic en Guardar.
Eliminando una receta
En la vista de detalles de la receta, haz clic en Eliminar (icono de papelera). Se te pedirá que confirmes. La eliminación elimina la receta, sus ingredientes, pasos, imágenes y cualquier entrada de recetario asociada. Los recuerdos vinculados se conservan pero su asociación con la receta se elimina.
Calificación y favoritos
- • Calificación — Haz clic en las estrellas (1–5) en cualquier tarjeta de receta o en la vista de detalles
- • Favoritos — Haz clic en el icono de corazón para marcar una receta como favorita. Usa el filtro de la barra lateral para ver solo favoritos.
Soporte para múltiples fotos
Cada receta admite hasta 4 fotos: una imagen principal (mostrada en la tarjeta) y 3 fotos adicionales visibles en la vista de detalles. Haz clic en el área "+" debajo de la imagen principal para agregar más fotos.
5. Importar recetas desde URLs
Zest incluye un poderoso motor de extracción de 4 niveles que puede extraer recetas de prácticamente cualquier sitio web de cocina.
Cómo importar
- Haz clic en la opción "Importar desde URL" en la barra lateral
- Pega la URL de la página de la receta
- Haz clic en Extraer
- Zest muestra una vista previa con los datos extraídos: título, descripción, ingredientes, pasos, tiempos, porciones y foto
- Revisa y edita cualquier cosa antes de guardar
- Haz clic en Guardar para agregarla a tu colección
Cómo funciona el extractor
Zest intenta cuatro métodos en orden, utilizando el primero que funcione:
- Biblioteca recipe-scrapers — Soporta más de 400 sitios de cocina populares con analizadores específicos del sitio
- JSON-LD — Lee datos estructurados incrustados en la página (formato de receta Schema.org)
- Microdata — Lee atributos de microdatos HTML
- Análisis heurístico — Coincidencia inteligente de selectores CSS para páginas no estructuradas
Las recetas importadas se etiquetan automáticamente con la categoría "Importado de Internet" y una insignia azul que muestra el dominio de origen.
6. Ingredientes y calculadora de porciones
Ingredientes estructurados
Cada ingrediente tiene cuatro campos:
- • Cantidad — Un número (soporta decimales: 0.5, 1.25, etc.)
- • Unidad — La medida (tazas, gramos, ml, cucharada, cucharadita, oz, lb, etc.)
- • Nombre — El nombre del ingrediente
- • Nota — Detalles opcionales ("picado", "a temperatura ambiente", "opcional")
Calculadora de porciones
En cualquier vista de detalles de receta:
- Busca el indicador de porciones (p. ej., "Sirve para 4")
- Usa los botones + y − para ajustar el número de porciones
- Todas las cantidades de ingredientes se recalculan proporcionalmente en tiempo real
- Las fracciones se muestran hermosamente: ½, ⅓, ¼, ⅔, ¾
Por ejemplo, una receta para 4 porciones con "2 tazas de harina" escalada a 6 porciones muestra "3 tazas de harina".
7. ¿Qué cocino?
Esta es una de las características únicas de Zest. Responde a la pregunta: "Tengo pollo, arroz y cebolla — ¿qué puedo hacer?"
Cómo usar
- Haz clic en "¿Qué cocino?" en la barra lateral
- Comienza a escribir un nombre de ingrediente — aparecen sugerencias de tu base de datos de recetas
- Haz clic para agregar ingredientes a tu lista
- Zest muestra instantáneamente recetas coincidentes, clasificadas por porcentaje de coincidencia
Entendiendo los resultados
Cada resultado muestra:
- • Porcentaje de coincidencia — Cuántos de los ingredientes de la receta tienes (verde = 75%+, naranja = 50%+, gris = por debajo del 50%)
- • Ingredientes que faltan — Destacados en rojo para que sepas qué necesitarías comprar
- • Ajuste de porciones — Escala la receta directamente desde los resultados
- • "Agregar a la lista de compras" — Un clic para agregar los ingredientes que faltan a tu lista de compras
8. Lista de compras
Agregando artículos
Hay varias formas de agregar artículos a tu lista de compras:
- • Desde cualquier vista de detalles de receta, haz clic en "Agregar a la lista de compras"
- • Desde los resultados de "¿Qué cocino?", haz clic en "Agregar artículos que faltan"
- • Escribe manualmente artículos en la vista de lista de compras
Combinación inteligente
Cuando agregas ingredientes de múltiples recetas, Zest los combina inteligentemente. Si la Receta A necesita 200g de arroz y la Receta B necesita 100g de arroz, tu lista de compras muestra 300g de arroz.
Usando la lista
- • Marca artículos mientras compras
- • La lista persiste entre sesiones
- • Borra artículos completados o la lista completa cuando hayas terminado
9. Recuerdos
Los recuerdos son lo que hace diferente a Zest de cualquier otro gestor de recetas. Un recuerdo conecta fotos, fechas, ubicaciones e historias con una receta, convirtiendo tu colección de recetas en un diario culinario.
Creando un recuerdo
- Haz clic en Recuerdos en la barra lateral
- Haz clic en + Nuevo Recuerdo
-
Completa los detalles:
- ◦ Título — "Cena de Navidad 2025", "Primer intento de masa madre", etc.
- ◦ Fotos — Carga hasta 10 fotos. Las fotos JPEG con datos EXIF completarán automáticamente la fecha y ubicación.
- ◦ Fecha — Cuándo sucedió (detectado automáticamente del EXIF de la foto si está disponible)
- ◦ Ubicación — Dónde sucedió (detectado automáticamente de coordenadas GPS mediante codificación inversa)
- ◦ Historia — La descripción de lo que pasó, quién estuvo allí, por qué fue especial
- ◦ Receta vinculada — Asocia este recuerdo con una receta de tu colección
- Haz clic en Guardar
Características de fotos
- • Carga de múltiples fotos — Selecciona múltiples fotos a la vez
- • Detección automática de EXIF — Zest lee automáticamente la fecha y coordenadas GPS de fotos JPEG
- • Codificación inversa — Las coordenadas GPS se convierten en nombres de lugares legibles (p. ej., "Brooklyn, Nueva York")
- • Soporte HEIC/HEIF — Las fotos del iPhone funcionan de inmediato
- • Optimización de imágenes — Las fotos se redimensionan automáticamente (máx. 1920px) y se convierten a JPEG para un almacenamiento óptimo
Viendo recuerdos
- • Vista de cuadrícula — Todos los recuerdos mostrados como tarjetas con foto de portada, fecha, ubicación y receta vinculada
- • Vista de detalles — Haz clic en cualquier recuerdo para ver la galería de fotos completa, historia y metadatos
- • Desde la vista de receta — Cada receta muestra sus recuerdos asociados en una sección dedicada
Editando y eliminando
- • Haz clic en el botón Editar en la vista de detalles del recuerdo para modificar cualquier campo o agregar/eliminar fotos
- • Haz clic en Eliminar para eliminar permanentemente el recuerdo y sus fotos
10. Tarjetas de momento
Las tarjetas de momento convierten tus recuerdos en imágenes hermosas y compartibles diseñadas para redes sociales.
Generando una tarjeta
- Abre cualquier recuerdo que tenga al menos una foto
- Haz clic en el botón Compartir (botón naranja degradado)
-
Elige una plantilla:
- ◦ Historia (1080×1920) — Historias de Instagram, TikTok
- ◦ Cuadrado (1080×1080) — Feed de Instagram, WhatsApp
- ◦ Horizontal (1200×630) — Facebook, Twitter/X
- La vista previa se actualiza en tiempo real
- Haz clic en Descargar o usa el botón Compartir (en móvil, usa la hoja de intercambio nativa)
Diseño de tarjeta
Cada tarjeta incluye:
- • Tu foto como fondo de sangrado completo con superposición de gradiente oscuro
- • El título del recuerdo en texto grande y audaz
- • Fecha y ubicación
- • Nombre de la receta vinculada
- • Marca Zest sutil (barra naranja + texto "Zest")
11. Recetarios
Los recetarios son colecciones curadas de recetas — perfectas para organizar por tema, compartir con amigos o crear exportaciones PDF dignas de regalo.
Creando un recetario
- Haz clic en Recetarios en la barra lateral
- Haz clic en + Nuevo Recetario
- Agrega un nombre, descripción y opcionalmente una nota del autor
- Fotos de portada — Carga hasta 2 imágenes de portada. Usa arrastrar para reposicionar para enmarcar perfectamente.
- Agregar recetas — Selecciona recetas de tu colección para incluir
- Haz clic en Guardar
Administrando recetarios
- • Reordenar recetas — Arrastra recetas dentro de un recetario para establecer el orden
- • Editar — Cambia nombre, descripción, portadas o selección de recetas en cualquier momento
- • Eliminar — Elimina el recetario pero no las recetas mismas
Nota del autor
Cada recetario tiene una nota personal opcional que aparece en la parte superior cuando se comparte o se exporta. Úsala para dedicatorias, contexto o un mensaje personal ("Mamá, aquí están nuestras recetas familiares que he estado recopilando...").
13. Exportar PDF
Exporta recetarios como PDF profesionales adecuados para imprimir o regalar.
Cómo exportar
- Abre un recetario
- Haz clic en el botón PDF
-
Zest genera un PDF con:
- ◦ Página de portada con el nombre del recetario y fecha
- ◦ Tarjetas de receta con ingredientes, pasos y metadatos
- ◦ Tipografía adecuada con fuentes DejaVu (soporte Unicode completo)
- El PDF se descarga automáticamente
14. Configuración y perfil
Accede a la configuración haciendo clic en tu avatar o el icono de engranaje en la barra lateral.
Perfil
- • Nombre — Tu nombre para mostrar
- • Correo electrónico — Tu correo electrónico de inicio de sesión
- • Contraseña — Cambia tu contraseña (requiere contraseña actual)
- • Avatar — Carga una foto de perfil
Categorías y etiquetas
- • Ver, renombrar o eliminar categorías
- • Ver, renombrar, cambiar color o eliminar etiquetas
15. Respaldos y datos
Respaldos automáticos
- Ve a Configuración → Respaldos
- Habilita los respaldos automáticos
-
Configura:
- ◦ Frecuencia — Cada 12 horas, 24 horas o 7 días
- ◦ Retención — Cuántos respaldos mantener (predeterminado: 7)
- ◦ Incluir imágenes — Si incluir fotos cargadas en respaldos
Los respaldos se almacenan en el directorio ./data/backups/ en tu máquina host.
Exportación manual
- • Respaldo completo (ZIP) — Exporta la base de datos completa + todas las imágenes. Úsalo para recuperación ante desastres o migración a un nuevo servidor.
- • Exportación JSON — Exporta recetas en un formato JSON portátil para interoperabilidad.
Importar
- • Importación de base de datos — Carga un ZIP de respaldo completo para restaurar toda tu instancia. Advertencia: esto reemplaza completamente la base de datos actual.
- • Importación JSON — Carga un archivo JSON para agregar recetas a tu colección existente. Los duplicados se detectan y se omiten.
Migración entre servidores
- Exporta un respaldo completo del servidor antiguo
- Configura una instancia de Zest nueva en el nuevo servidor
- Importa el respaldo
- Listo — todas tus recetas, recuerdos, recetarios e imágenes se restauran
16. Modo oscuro
Haz clic en el icono de luna/sol en el encabezado de la barra lateral para cambiar entre temas claro y oscuro. Tu preferencia se guarda localmente y persiste entre sesiones.
17. Atajos de teclado
| Atajo | Acción |
|---|---|
| Esc | Cierra cualquier modal o superposición abierta |
18. Solución de problemas
"El puerto 8000 ya está en uso"
Cambia el puerto en docker-compose.yml:
ports:
- "9000:8000"
En Windows, los puertos 7681–8782 pueden ser bloqueados por Hyper-V. Usa el puerto 9000 o superior.
Las fotos no se cargan
- • Verifica que el directorio ./app/static/uploads exista y sea escribible
- • El tamaño máximo de archivo depende de la configuración de tu proxy inverso. Agrega client_max_body_size 20M; a tu configuración de Nginx.
Migraciones de base de datos
Las migraciones corren automáticamente cada vez que arranca el contenedor. No hay un comando manual que ejecutar. La rutina de arranque crea las tablas faltantes y agrega columnas faltantes en bases de datos existentes. El trabajo de esquema es idempotente — reiniciar una base de datos al día es no-op.
Si ves errores de arranque que mencionan el esquema, comparte el log del contenedor al abrir un issue:
docker compose logs -f zest
Las fotos HEIC no funcionan
El soporte HEIC requiere el paquete pillow-heif, que está incluido en la imagen Docker predeterminada. Si ejecutas Zest fuera de Docker, instálalo por separado:
pip install pillow-heif
Olvidé tu contraseña
Si está bloqueado, puedes restablecer a través de la base de datos:
docker exec -it zest python -c "
import bcrypt
from app.database import SessionLocal
from app.models import User
db = SessionLocal()
user = db.query(User).filter(User.email == 'your@email.com').first()
user.password_hash = bcrypt.hashpw(b'newpassword', bcrypt.gensalt()).decode()
db.commit()
print('Password reset successfully')
"
Verificación de salud
Verifica que tu instancia esté funcionando:
curl http://localhost:8000/api/health
# {"status": "healthy", "recipes": 42, "users": 1}
Usa este punto final con Uptime Kuma, Healthchecks.io o cualquier herramienta de monitoreo.
¿Necesitas ayuda?
Abre un problema en GitHub — nos encantaría ayudarte.
🍊 Zest — Porque las recetas merecen recuerdos.