Skip to content

Repository files navigation

知食分子 KnowIngre

吃,是一门学问

轻量级智能厨房管理工具,支持 AI 生成菜谱、食材库存追踪、今日菜单规划。内置多用户系统和家庭共享。

功能

菜谱库

  • AI 一键生成菜谱(输入菜名 → 自动填入食材和步骤)
  • AI 微调修改("换牛肉"、"减少用油")
  • 手动录入,支持标签分类、评分、搜索
  • 20 种预设标签,AI 生成时自动选用,避免标签散乱
  • 记录最近制作日期

食材库存

  • 10 个分类(蔬菜、肉类、蛋奶、调料等)
  • 智能匹配可制作的菜品,标注缺失食材
  • 模糊匹配:「鸡胸肉」自动匹配库存里的「鸡胸肉」
  • 做完菜后库存归零自动清理

今日菜单

  • 采购清单:汇总所需食材,标注已有/缺货
  • 做完自动扣减库存,标记制作日期
  • 支持逐道确认或一键全部做完

烹饪足迹

  • 累计次数、菜品数、本月次数和连续下厨天数
  • 年度日历热力图、常做菜排行和标签分布
  • 个人/家庭记录隔离,家庭记录显示操作者
  • 可撤销误记的烹饪记录(不会自动恢复库存)

厨房灵感

  • 悬浮入口打开厨房问答助手,支持连续追问
  • 可智能参考当前个人/家庭库存,也可直接咨询食材做法
  • 支持“现在能做什么”“鱼有哪些做法”“推荐一道新菜”等开放问题
  • 对话不会自动修改库存或保存菜谱,回答确认后再由用户操作

家庭共享

  • 个人/家庭双模式,数据完全隔离
  • 邀请码加入,成员共同编辑菜谱和库存
  • 单个菜谱或批量同步到对面范围

多用户

  • 注册登录,bcrypt 加密
  • 新密码至少 8 位;登录和注册接口带有基础频率限制
  • 默认仅允许创建首个管理员账号;已有部署如需临时开放注册,可设置 OPEN_REGISTRATION=1
  • 管理员可重置他人密码
  • 数据 JSON 导入导出

本地运行

# 1. 安装 Bun
curl -fsSL https://bun.sh/install | bash

# 2. 启动
bun run server.ts

# 3. 打开
open http://localhost:3000

首次启动自动创建数据库。停止按 Ctrl+C,重启不会丢失数据。

升级已有部署

单位换算和烹饪足迹功能使用非破坏性迁移。升级启动时会新增 ingredient_unit_conversionscook_historyschema_migrationsapp_metadata 表,并为库存增加用于并发保护的 version 列。现有菜谱和库存记录不会删除;历史上误存成 1个 + 的库存会安全规范化为 1 +

# 1. 在旧服务仍运行时也可生成一致的 SQLite 备份
sqlite3 data.db ".backup 'data-before-upgrade.db'"

# 2. 更新项目文件(需要包含新增的 unit-conversion.ts)

# 3. 重启;新表会自动创建
bun run server.ts

旧菜谱中的 200g2个 等文本会在扣减时即时解析,因此无需批量改写历史数据。 首次升级会把每份菜谱现有的 cooked_dates 逐条复制到 cook_history,原字段保持不变;迁移带版本记录,重复启动不会重复导入。 家庭范围的旧记录无法可靠判断当时由哪位成员完成,因此会显示为“历史记录”,之后的新记录会显示实际操作者。 旧备份中没有换算规则或足迹表时也可正常导入;新备份会一并包含已保存的食材换算规则和烹饪足迹。 备份导入采用单事务的安全合并:相同 ID 更新、新 ID 添加,其他现有数据保留,失败时全部回滚。

生产环境建议设置固定的 JWT_SECRET。未设置时,服务会在数据库中生成并持久化一个密钥,后续重启继续复用,避免用户会话每次重启都失效。

建议通过管理员流程或短时设置 OPEN_REGISTRATION=1 添加家庭成员,完成后移除该环境变量并重启服务。

AI 服务地址默认要求使用 HTTPS,且会阻止本机、私网和链路本地地址,避免把部署服务器当作内网代理。确实需要连接本机 HTTP 模型服务时,需同时显式设置 ALLOW_INSECURE_AI_URLS=1 ALLOW_LOCAL_AI_URLS=1,但不建议在公网部署时开启。

JWT_SECRET='请替换为足够长的随机字符串' bun run server.ts

使用流程

  1. 注册账号(第一个用户自动成为管理员)
  2. 设置中填入 API Key(默认 DeepSeek 接口)
  3. 菜谱库新建菜谱,或输入菜名让 AI 生成
  4. 库存中添加家中食材
  5. 菜谱卡片点「加入菜单」,切换到今日菜单查看采购清单
  6. 做完点「做完了」,库存自动扣减

项目结构

knowingre/
├── index.html          # 主页面
├── login.html          # 登录/注册
├── app.js              # 前端逻辑
├── styles.css          # 样式
├── server.ts           # Bun 后端
├── reset-password.ts   # 命令行重置密码
└── data.db             # SQLite 数据库(自动生成)

技术栈

HTML + CSS + Vanilla JS · Bun + SQLite · JWT + bcrypt · OpenAI 兼容 API


本项目由 DeepSeek V4 Pro 生成

About

No description, website, or topics provided.

Resources

Stars

0 stars

Watchers

0 watching

Forks

Releases

Packages

Contributors

Languages