尚未检测到更新。GitHub 发布版本后会显示在这里。
个人 GitHub 账号下公开仓库的所有者可以登录并验证所有权,自行管理介绍,无需管理员批准。
登录并生成验证文件,在 30 分钟内将其提交到此仓库的默认分支。其他分支或分叉仓库中的文件无效。然后在下方检查文件,即可无需管理员批准直接管理项目。请保留文件以维持管理权限。
如需登录,将前往登录页面。登录后请回到此处,再次点击所选的验证按钮。
在项目文件夹中运行 /nomorevibe verify,即可验证所有权并自行管理介绍。
一分钟完成验证plataforma open source de referencia para conocer la información nutricional de cualquier plato, en cualquier restaurante, en cualquier contexto
翻译准备中
取自仓库 README
正在加载完整 README。 以下为已保存的摘录。
La base de datos nutricional abierta de restaurantes — para restaurantes lo que Open Food Facts es para productos envasados. foodXPlorer es una plataforma open source para consultar informacion nutricional de platos de restaurantes y cadenas. Resuelve un problema concreto: cuando comes fuera de casa, estas ciego nutricionalmente. Las apps de nutricion (MyFitnessPal, Fitia) estan pensadas para tracking en casa. Las apps de restaurantes (TheFork, TripAdvisor) no tienen informacion nutricional. foodXPlorer cubre ese hueco.查看完整 README ↗
La base de datos nutricional abierta de restaurantes — para restaurantes lo que Open Food Facts es para productos envasados.
foodXPlorer es una plataforma open source para consultar informacion nutricional de platos de restaurantes y cadenas. Resuelve un problema concreto: cuando comes fuera de casa, estas ciego nutricionalmente.
Las apps de nutricion (MyFitnessPal, Fitia) estan pensadas para tracking en casa. Las apps de restaurantes (TheFork, TripAdvisor) no tienen informacion nutricional. foodXPlorer cubre ese hueco.
Como funciona: un motor de estimacion de cuatro niveles devuelve valores nutricionales con nivel de confianza explicito — siempre sabes si estas viendo datos oficiales, una estimacion por ingredientes, una extrapolacion por similitud o una aproximacion por LLM. El bot de Telegram es la interfaz principal. Tambien acepta mensajes de voz.
Fase 1 + Fase A0/A1 completadas. Bot de Telegram funcional con voz, menus, cocina espanola y 250 platos canonicos.
| Componente | Estado | Notas |
|---|---|---|
| API REST | Funcionando | Fastify + PostgreSQL + pgvector + Redis. 21 migraciones |
| Bot Telegram | Funcionando | 13 comandos + NL + voz + analisis de menus |
| Motor de estimacion | Funcionando | 4 niveles + cooking yield + alias matching |
| Pipeline de ingestion | Funcionando | 14 cadenas + 1 restaurante virtual (cocina-espanola) |
| Base de datos BEDCA | Importada | Base espanola de composicion de alimentos (Tier 1) |
| Landing page | Funcionando | nutriXplorer.com (Next.js) |
| Tests | ~5188 passing | 5 workspaces, build y lint clean |
| Comando | Descripcion |
|---|---|
/estimar <plato> [en <cadena>] | Estima nutrientes de un plato |
/comparar <plato_a> vs <plato_b> | Compara dos platos lado a lado |
/menu <plato1, plato2, ...> | Estima un menu completo (varios platos) |
/contexto [<cadena>|borrar] | Establece/ve/borra el contexto de cadena activo |
/receta <texto libre> | Calcula nutrientes de una receta completa |
/buscar <texto> | Busca platos en la base de datos |
/restaurantes [cadena] | Lista restaurantes |
/restaurante <nombre> | Busca/crea restaurante con teclado inline |
/platos <restaurante_id> | Lista platos de un restaurante |
/cadenas | Lista cadenas disponibles |
/info | Estado del sistema y version |
/start /help | Ayuda y lista de comandos |
El bot entiende espanol sin necesidad de comandos:
cuantas calorias tiene un big mac
que engorda mas, big mac o whopper
estoy en mcdonalds (establece contexto)
big mac (usa el contexto activo)
menu: ensalada, filete, flan (estima un menu completo)
Envia un mensaje de voz y el bot lo transcribe automaticamente (Whisper) y procesa como texto. Soporta estimaciones, comparaciones y menus:
[audio] "dos pinchos de tortilla" -> estimacion con porcion x2
[audio] "menu: ensalada y un filete" -> estimacion de menu
Limite: 30 segundos por mensaje, 50 mensajes de voz al dia.
Cuando dices "estoy en mcdonalds" o usas /contexto mcdonalds, el bot recuerda la cadena durante 2 horas. Las consultas siguientes se filtran automaticamente por esa cadena sin necesidad de especificarla cada vez.
doble big mac (x2)
media racion de pollo (x0.5)
big mac xl (x1.5)
tapa de calamares (prefijo de formato eliminado)
250 platos canonicos espanoles disponibles sin necesidad de seleccionar cadena. Aliases regionales reconocidos automaticamente:
bravas -> Patatas bravas
bocata de jamon -> Bocadillo de jamon serrano
tortilla espanola -> Tortilla de patatas
cana -> Cerveza (cana)
tapa de calamares -> Calamares a la romana
Estima varios platos a la vez y muestra el total nutricional:
/menu ensalada mixta, filete de pollo, flan
menu: sopa, merluza a la plancha, fruta
Muestra cada plato individual + totales agregados (15 nutrientes).
Bebidas alcoholicas se estiman con el nutriente alcohol (7 kcal/g). Se muestra con el indicador de cerveza cuando el alcohol es > 0.
Envia una foto o PDF de un menu y el bot lo analiza usando OCR + Vision AI, estimando los nutrientes de cada plato detectado.
/comparar big mac vs whopper
/comparar big mac en mcdonalds-es vs whopper en burger-king-es
que engorda mas, big mac o whopper
Muestra una tabla comparativa con calorias, proteinas, grasas, carbohidratos y fibra, con indicador del "ganador" en cada nutriente.
Ver docs/user-manual-bot.md para el manual completo con ejemplos.
packages/
api/ Fastify REST API (estimacion, busqueda, ingestion, recetas, conversacion)
bot/ Telegram bot (node-telegram-bot-api, voz, menus)
shared/ Tipos y schemas compartidos (Zod)
scraper/ Pipeline de scraping (Crawlee + Playwright)
landing/ Landing page (Next.js 14 + Tailwind)
Runtime Node.js + TypeScript (strict)
API Fastify + OpenAPI + Zod validation
Database PostgreSQL 16 + pgvector + pg_trgm
Cache Redis (rate limiting, bot state, estimaciones)
ORM Prisma (21 migraciones) + Kysely (queries complejas)
Bot node-telegram-bot-api
Landing Next.js 14 + Tailwind + Framer Motion
LLM OpenAI API (interpretacion, recetas, voz via Whisper)
Scraping Crawlee + Playwright
Infra Render + Supabase + Upstash + Cloudflare
| Nivel | Cuando aplica | Confianza |
|---|---|---|
| L1 — Dato oficial | El plato existe en BD con datos del restaurante | Alta |
| L2 — Estimacion por ingredientes | Se conocen los ingredientes y sus pesos | Media |
| L3 — Extrapolacion por similitud (pgvector) | Solo existe el nombre del plato | Baja |
| L4 — Aproximacion LLM | Sin coincidencia en BD. Incluye yield por estado de coccion | Muy baja |
El nivel de confianza siempre es visible para el usuario. Los datos de prioridad mas alta (BEDCA > restaurante > USDA > estimado) se muestran primero.
| Fuente | Tipo | Platos/Alimentos |
|---|---|---|
| Cadenas espanolas (14) | Datos oficiales | ~1400 platos |
| Cocina espanola (virtual) | BEDCA + estimacion | 250 platos canonicos |
| BEDCA | Base nacional | 20 alimentos (placeholder, pendiente autorizacion AESAN) |
| USDA SR Legacy | Base internacional | 514 alimentos |
Calorias, proteinas, carbohidratos, azucares, grasas, grasas saturadas, fibra, sal, sodio, grasas trans, colesterol, potasio, grasas monoinsaturadas, grasas poliinsaturadas, alcohol.
.env.example)npm install
npx prisma migrate deploy --schema packages/api/prisma/schema.prisma
npm run build
npm test # todos los workspaces
cd packages/api && npx vitest run # solo API (~2710 tests)
cd packages/bot && npx vitest run # solo bot (~1143 tests)
Este proyecto usa Spec-Driven Development con sdd-devflow v0.13.2:
Spec -> Plan -> Implementacion TDD -> Validacion -> Code Review + QA -> Merge
Cada feature pasa por reviews cruzados con multiples modelos AI (Gemini, Codex, Claude) para spec, plan y codigo.
| Documento | Descripcion |
|---|---|
docs/user-manual-bot.md | Manual completo del bot con ejemplos |
docs/specs/api-spec.yaml | Especificacion OpenAPI de la API REST |
docs/project_notes/ | Memoria del proyecto (tracker, decisiones, bugs) |
docs/tickets/ | Tickets de cada feature con spec + plan + log |
docs/research/product-evolution-analysis-2026-03-31.md | Analisis de evolucion del producto (Fase 2) |
Licencia pendiente de definicion.
Fase A1 completada - Abril 2026 - Spec-Driven Development