🥘 Vibe Cook Backend

August 20, 2026 · View on GitHub

Vibe Cook 的后端:把 HowToCook 的 Markdown 菜谱变成结构化 JSON,再交给前端做沉浸式分步烹饪。

API Docs   Frontend   BUSL-1.1

前端仓库:zkeq/vibe-cook · 在线 App:https://cook.corerevive.cn


✨ 特点

  • 🪶 极简 — 扁平结构,路由 → 鉴权 → 业务 → SQL
  • 💾 SQLite 单文件 — 零外部依赖,首次启动自动建表
  • 🔐 JWT — 管理员 / 编辑才能写菜谱
  • 🍳 为跟做而生 — 列表、搜索、随机、分类、完整分步 JSON

🚀 快速开始

python3 -m venv .venv && source .venv/bin/activate
pip install -r requirements.txt
cp config.example.yaml config.yaml
python main.py
📚 API 文档http://localhost:8000/docs
❤️ 健康检查http://localhost:8000/health
👤 默认管理员admin / admin123(请立刻改密)

前端把 NEXT_PUBLIC_API_URL 指到 http://localhost:8000/api/v1 即可联调。

⚙️ 配置

文件用途
config.example.yaml服务端模板(host / SQLite / JWT)
config.yaml本地配置,不要提交
.env.example灌库 / 生图脚本的密钥模板
.env脚本密钥,不要提交

python main.py 只读 config.yaml。AI 灌库、生图、上传 COS 等脚本读 .env

cp .env.example .env
# 填 CHATFIRE_API_KEY、COS_SECRET_ID、COS_SECRET_KEY

📡 API

全部带 /api/v1 前缀。

方法路径说明
GET/api/v1/recipes菜谱列表(分页、分类)
GET/api/v1/recipes/{id}菜谱详情
GET/api/v1/recipes/search搜索
GET/api/v1/recipes/random随机菜谱
GET/api/v1/recipes/categories分类
POST/api/v1/recipes写入 / 更新(需 editor)
POST/api/v1/auth/login-by-password密码登录

完整字段契约见前端仓库 API_SPEC.md

📥 菜谱数据

运行时使用 data/vibe_cook.dbpython main.py 后即可直接出菜。

开放数据(JSON、索引、配图原图)只放在 dataset 分支The Unlicense,与 HowToCook 相同,允许二次开发(含商用)。main 只有应用程序代码和运行用的 SQLite。

git clone --branch dataset --single-branch https://github.com/zkeq/vibe-cook-backend.git vibe-cook-dataset
cd vibe-cook-dataset && git lfs pull

若要重新从 HowToCook Markdown 灌库:

# 仓库旁准备 HowToCook 源,默认读 ../HowToCook-official/dishes
python import_howtocook.py

可选的 AI 增强 / 生图(需要 .env 密钥):

python ai_import_recipes.py --test
python enhance_recipes_with_ai.py --test
python generate_recipe_images.py
python generate_step_images.py --test
python generate_overview_guide.py
python upload_images_to_cos.py

🐳 Docker

cp config.example.yaml config.yaml
./docker-start.sh start

数据文件在 ./data/vibe_cook.db

📁 目录

main.py              # 入口、CORS、启动建表
router.py            # 路由与参数校验
auth.py              # JWT / 密码
db.py                # SQLite
business/            # 业务(recipe / user)
sql/init.sql         # 建表
pipeline_env.py      # 脚本密钥(只读环境变量)
import_howtocook.py  # Markdown → SQLite

🛡️ 生产环境清单

  1. JWT.secret_key 换成足够长的随机串
  2. SERVER.debug: false,CORS 只放行前端域名
  3. 改掉默认管理员密码
  4. 不要提交 config.yaml.env

📄 许可

应用程序代码采用 Business Source License 1.1 © Zkeq。

  • 可以查看、修改、再分发,以及非生产使用
  • 禁止将本软件或其修改版上架任何应用商店,禁止出售或作为商业产品对外提供
  • 生产使用须向权利人取得商业授权:admin@icodeq.com
  • 本版本自 2030-08-19 起改为 GNU GPL v2 或更高版本

菜谱数据与配图dataset 分支,采用 The Unlicense,与 HowToCook 相同,可自由用于二次开发(含商用)。