Skip to content

A modern, open-source recipe repository inspired by HowToCook. This project aims to create a comprehensive, structured, and accessible collection of global recipes—enriched with metadata, automation, and AI-ready features. Includes CI/CD workflows, community-driven contributions, and support for advanced search and AI applications.

License

Notifications You must be signed in to change notification settings

iberi22/ComoCocinar

Folders and files

NameName
Last commit message
Last commit date

Latest commit

 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 

ComoCocinar/HowToCook

A modern, open-source recipe repository inspired by HowToCook. This project aims to create a comprehensive, structured, and accessible collection of global recipes—enriched with metadata, automation, and AI-ready features. Includes CI/CD workflows, community-driven contributions, and support for advanced search and AI applications. Recetario automatizado y enriquecido, con flujos CI/CD, integración para IA y comunidad bilingüe. Inspirado en HowToCook.

📑 Estado del Proyecto

  • Todas las recetas principales estandarizadas y enriquecidas (YAML, sensorial, nutricional, imágenes, fuentes, licencia)

  • En proceso de revisión y enriquecimiento de recetas secundarias y nuevas adiciones

  • Sincronización de índices, enlaces y documentación

  • Preparación para integración con agentes de IA, búsqueda semántica y vectorización

🚀 Integración final y automatización

Este repositorio integra:

  • Recetas colombianas estandarizadas con YAML Front Matter, imágenes libres, fuentes y licencia open source.

  • Automatización CI/CD: generación automática de metadatos (recipes_metadata.json) tras cada push a main.

  • Scripts y workflows para vectorización de recetas, listos para IA/RAG (ChromaDB, Qdrant, etc).

  • Documentos de comunidad en español e inglés.

  • Rama main protegida con checks automáticos.

📦 Flujos CI/CD y Documentación

Para una guía completa sobre el flujo CI/CD, el sistema de pre-commit, la vectorización para IA y cómo contribuir, consulta la nueva documentación en la carpeta docs/:

Workflows principales

  • Linting: Valida la calidad y el formato de las recetas (ci.yml).

  • Extracción de metadatos: Genera automáticamente recipes_metadata.json con los metadatos de todas las recetas (metadata.yml).

  • Vectorización IA: Script para generar vectores de recetas (.github/scripts/vectorize_recipes.py).

🧰 Herramientas de Desarrollo Local (Pre-commit)

Para asegurar la calidad y consistencia del código desde el momento de su creación, el proyecto utiliza hooks de pre-commit automáticos.

  • Husky: Gestiona los hooks de Git, permitiendo ejecutar scripts en diferentes etapas del ciclo de vida de Git (como pre-commit).

  • lint-staged: Ejecuta linters (como markdownlint) únicamente sobre los archivos que están en el "staging area" de Git (git add). Esto hace que el proceso sea rápido y eficiente. ¿Cómo funciona?

  1. Cuando ejecutas git commit, Husky se activa.

  2. Husky ejecuta la configuración de lint-staged definida en package.json.

  3. lint-staged revisa los archivos .md que vas a guardar y les aplica markdownlint --fix para corregir errores de formato automáticamente.

  4. Si no hay errores, el commit se completa. Este flujo garantiza que todo el contenido Markdown que llega al repositorio cumple con las reglas de estilo, evitando errores en el CI/CD y manteniendo la legibilidad.

🚦 Flujo automatizado de metadatos y protección de rama

  1. Extracción y generación automática de metadatos:

    • Cada vez que se realiza un push a main o se abre un Pull Request, el workflow metadata.yml ejecuta el script de extracción de metadatos.
    • Si hay cambios en recipes_metadata.json, se crea automáticamente un Pull Request con la actualización.
  2. Pull Request automático y automerge:

    • El Pull Request generado por el workflow se etiqueta y habilita para "automerge".
    • El PR solo se fusiona cuando todos los checks de CI/CD (lint, build, etc.) pasan correctamente.
    • Este proceso es compatible con las reglas de protección de rama más estrictas y no requiere intervención manual.
  3. Validación obligatoria:

    • Todos los cambios (manuales o automáticos) deben pasar los workflows de CI/CD antes de ser fusionados a main.
    • No se permite push directo a main si hay reglas de protección activas.
    • La integración continua asegura calidad y consistencia en toda la base de recetas.

Ejemplo de flujo completo

  • Un colaborador o workflow genera cambios en recetas.

  • Se actualiza recipes_metadata.json automáticamente.

  • Se abre un Pull Request automático con los cambios de metadatos.

  • Los workflows de CI/CD validan el PR.

  • Si todo es correcto, el PR se fusiona automáticamente a main.

Requisitos para contribuir

  • Todas las recetas deben tener YAML Front Matter completo y cumplir la metodología.

  • Corrección de lints obligatoria (Markdown).

  • Los workflows deben pasar antes de aceptar un Pull Request.

  • Consulta la sección "Automatización" para entender cómo se integran los cambios de metadatos y cómo se revisan de forma automática.

🤖 Vectorización para IA y RAG

  1. Ejecuta el script .github/scripts/vectorize_recipes.py tras actualizar los metadatos.

  2. El archivo recipes_vectors.jsonl estará listo para importar en ChromaDB, Qdrant o motores RAG.

  3. Puedes adaptar los campos a vectorizar según necesidades de tu app o agente.

🤝 ¿Cómo contribuir?

  • Crea una rama desde main.

  • Usa la plantilla de receta y sigue la metodología documentada.

  • Agrega fuentes, imágenes libres y licencia.

  • Haz Pull Request y espera que los checks CI/CD pasen.

  • Puedes contribuir en español o inglés. Consulta CONTRIBUTING.md y CONTRIBUTING.es.md.

🛡️ Protección de rama main

  • Solo se puede mergear a main si todos los checks CI/CD pasan.

  • No se permite force-push ni borrado accidental de main.

  • Los administradores pueden ajustar las reglas en Settings > Branches.

📑 Documentos clave

📚 Licencia

MIT. Todo el contenido es open source y reutilizable.

🌐 Créditos y agradecimientos

Inspirado por HowToCook y la comunidad de cocina y tecnología.

📂 Estructura del repositorio y formato estándar

Cada receta debe comenzar con un bloque YAML Front Matter que contenga los metadatos clave. Esto permite búsquedas, filtrados y procesamiento automático por agentes inteligentes y facilita la interoperabilidad.

Ejemplo de bloque YAML

---
title: "Chuzo Colombiano"
region: "Nacional"
categories: ["Snack", "Comida callejera", "Plato fuerte"]
sensory:
  flavor: ["Umami", "Ahumado"]
  texture: ["Jugoso", "Dorado por fuera"]
  aroma: ["Ahumado", "Especiado"]
  presentation: "Se sirve en brocheta, acompañado de papa y arepa. Ideal para compartir en fiestas y eventos nocturnos."
main_ingredients:
  - Carne de res
  - Pollo
  - Papa salada
  - Arepa
difficulty: "★★☆☆☆"
prep_time: "40 minutos"
servings: 6
images:
  - url: "https://pixabay.com/es/photos/chorizo-parrilla-barbacoa-2314640/"
    description: "Chuzo colombiano en parrilla (Pixabay)"
sources:
  - "https://www.recetasdecolombia.com/chuzo"
  - "https://www.youtube.com/results?search_query=chuzo+colombiano"
license: "MIT"
---

📋 Campos estándar de metadatos YAML para recetas

Cada receta debe incluir un bloque YAML Front Matter al inicio, con los siguientes campos:

  • title: Nombre completo del plato.

  • region: Región o categoría principal (ejemplo: Andina, Caribe, Nacional).

  • categories: Lista de categorías de uso (ejemplo: Snack, Plato fuerte, Comida callejera).

  • sensory: Objeto con subcampos para flavor (sabores dominantes), texture (texturas principales), aroma (aromas destacados) y presentation (descripción de presentación y experiencia).

  • main_ingredients: Ingredientes principales o diferenciadores.

  • difficulty: Dificultad estimada (puede ser en estrellas o texto).

  • prep_time: Tiempo estimado de preparación total.

  • servings: Porciones aproximadas.

  • images: Lista de objetos con url y description de imágenes libres de uso.

  • sources: Lista de enlaces a fuentes, recetas, videos, artículos o entrevistas.

  • license: Licencia de uso del contenido (ejemplo: MIT, CC BY 4.0). Consulta ejemplos y plantillas en los archivos de cada región y en COLOMBIAN_RECIPES_PLAN.md.

  • region: Región o categoría principal (ejemplo: Andina, Caribe, Nacional).

  • categories: Lista de categorías de uso (ejemplo: Snack, Plato fuerte, Comida callejera).

  • sensory: Objeto con subcampos para flavor (sabores dominantes), texture (texturas principales), aroma (aromas destacados) y presentation (descripción de presentación y experiencia).

  • main_ingredients: Ingredientes principales o diferenciadores.

  • difficulty: Dificultad estimada (puede ser en estrellas o texto).

  • prep_time: Tiempo estimado de preparación total.

  • servings: Porciones aproximadas.

  • images: Lista de objetos con url y description de imágenes libres de uso.

  • sources: Lista de enlaces a fuentes, recetas, videos, artículos o entrevistas.

  • license: Licencia de uso del contenido (ejemplo: MIT, CC BY 4.0). Consulta ejemplos y plantillas en los archivos de cada región y en COLOMBIAN_RECIPES_PLAN.md.

🤝 Cómo Contribuir

  1. Crea tus recetas siguiendo la plantilla YAML Front Matter y el estándar de enriquecimiento sensorial/nutricional.

  2. Haz un Pull Request. Solo se aceptarán cambios que cumplan con la estructura y pasen la validación automática.

  3. Consulta el archivo .github/PULL_REQUEST_TEMPLATE.md y la documentación para detalles.

  4. Crea tus recetas siguiendo la plantilla YAML Front Matter y el estándar de enriquecimiento sensorial/nutricional.

  5. Haz un Pull Request. Solo se aceptarán cambios que cumplan con la estructura y pasen la validación automática.

  6. Consulta el archivo .github/PULL_REQUEST_TEMPLATE.md y la documentación para detalles.

🛡️ Licencia

Este proyecto es open source bajo la licencia MIT. Consulta el archivo LICENSE para más detalles.

📚 Enlaces y recursos

📝 Metodología y lecciones aprendidas

La estandarización y enriquecimiento de recetas se basa en:

  • Investigación en fuentes académicas, colectivas y restaurantes reconocidos

  • Análisis sensorial y nutricional por ingrediente

  • Inclusión de imágenes libres y enlaces verificados

  • Documentación abierta y colaborativa Para detalles, consulta los archivos de metodología y el plan general. Inspirado en HowToCook y adaptado para IA, conocimiento abierto y la cocina colombiana.

  • Buñuelos

  • Almojábanas

  • Arepa de Huevo

  • Pandebono

Salsas y Acompañamientos

🌍 Recetas del Mundo (Pendientes de Adaptación)

Platos de Carne

{{ ... }}

Pescados y Mariscos


Desayuno


Platos Principales


Semi-elaborados


Sopas y Gachas


Bebidas


Salsas y Otros Ingredientes


Postres

Conocimientos Avanzados

Si ya has hecho muchas de las recetas anteriores, has entrado en el mundo de la cocina y quieres aprender técnicas más avanzadas, sigue leyendo:

Técnicas de ingredientes

Términos profesionales avanzados

Caramelización del azúcar

Técnicas para medir la temperatura del aceite

Proyectos derivados

AI Agent Integration

Este repositorio proporciona datos de recetas estructurados en dos formatos:

  1. recipes_metadata.json: Contiene metadatos para todas las recetas en el repositorio, incluyendo título, descripción, ingredientes y otros campos.
  2. recipes_vectors.jsonl: Contiene embeddings vectoriales para cada receta, que se pueden utilizar para búsqueda semántica y recuperación.

Uso de los datos

Los agentes de IA pueden utilizar estos archivos para:

  • Recuperar información de recetas por ID o título
  • Realizar búsqueda semántica utilizando embeddings vectoriales
  • Construir sistemas de recomendación

Ejemplo: Cargar metadatos

// recipes_metadata.json es un arreglo de objetos de recetas
[
  {
    "nombre": "Nombre de la receta",
    "descripcion": "Descripción de la receta",
    ...
  }
]

Ejemplo: Uso de embeddings

El archivo recipes_vectors.jsonl está en formato JSON Lines. Cada línea es un objeto JSON con:

  • Los metadatos de la receta
  • Un campo vector que contiene el arreglo de embeddings

Los agentes pueden cargar los embeddings en una base de datos vectorial como ChromaDB o Qdrant para búsqueda de similitud eficiente.

Actualizaciones automáticas

Estos archivos se actualizan automáticamente mediante GitHub Actions cuando se realizan cambios en la rama main. Los archivos actualizados se comprometen en el repositorio y están disponibles para su uso.

Ejemplo: Búsqueda de similitud

import { ChromaClient } from 'chromadb';

const client = new ChromaClient();
const collection = await client.getCollection('recipes');

// Consulta para recetas similares
const results = await collection.query({
  queryEmbeddings: [/* tu vector de embeddings de consulta */],
  nResults: 5
});

// Los resultados contendrán las 5 recetas más similares
console.log(results);

Para generar los archivos recipes_metadata.json y recipes_vectors.jsonl, puedes ejecutar los scripts:

npx markdownlint "**/*.md" --fix --ignore node_modules && npx ts-node .github/scripts_ts/extract_metadata.ts && npx ts-node .github/scripts_ts/vectorize_recipes.ts

About

A modern, open-source recipe repository inspired by HowToCook. This project aims to create a comprehensive, structured, and accessible collection of global recipes—enriched with metadata, automation, and AI-ready features. Includes CI/CD workflows, community-driven contributions, and support for advanced search and AI applications.

Resources

License

Code of conduct

Contributing

Stars

Watchers

Forks

Releases

No releases published

Packages

No packages published

Contributors 402