Skip to content
 
 

Latest commit

 

History

37 Commits

Folders and files

NameName
Last commit message
Last commit date
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 

Repository files navigation

干饭厨子

🍳 DaCook · 干饭厨子

可一键部署到 NAS 的家庭点菜系统 —— 让一家人轮流做饭、点菜、互相打分。

Docker Next.js SQLite License

中文 · English


「今天谁做饭?」「吃啥?」——干饭厨子把这两个每天都要吵一遍的问题,变成一件温馨小事。

前一天晚上自动开好明天的饭局,家人各自点菜,谁掌勺谁认领,吃完打个分; 月底还能在贡献墙上看看这个月是谁在默默下厨。专为家庭设计,不依赖任何云服务,数据全在你自己的 NAS 上。

📢 项目来源声明

本项目基于 Gloridust/GanCook 衍生,遵循 MIT License。 原始版本版权归原作者所有(Copyright (c) 2026 Gloridust)。 Copyright (c) 2026 Gloridust (original author) Copyright (c) 2026 RendaHuang (fork maintainer)

✨ 我增加了什么功能?

  • 菜系标签管理 —— 管理员可添加菜系,菜品可按菜系分类。点菜时支持快速筛选。
  • 配方管理 —— 支持按菜品维护原材料和用量信息,“去买菜”时会按同名+同规格合并需求量。
  • 掌勺人说了算 —— 认领掌勺的用户可以对"大家点了什么"进行修改,决定到底做哪几个菜。
  • 一键生成采购清单 —— 对菜品做完过滤之后,点击"一键生成采购清单",即可生成一份采购清单。配方中相似的名称、同单位的数量将会合并。、
  • 步骤管理 —— 可按菜品维护大致制作步骤,避免太久没做有点忘记。

配方管理

采购清单

  • 交互优化

    • "点你想吃的"和"大家点了什么"以 Tabs 切换,掌勺人默认显示"大家点了什么"
    • 菜品以 一排三个 的列表展示,支持按菜系快速查询
    • 菜品明细可添加链接,便于找回原始推文
  • 初次尝试在他人项目上进行二开,如有违反协议,请联系我删除。

  • 以下为原作者项目描述

✨ 特性

  • 🚀 真·开箱即用 —— 一条 docker run 跑起来,无需配置任何环境变量,密钥首启自动生成并持久化。
  • 🗄️ 单容器 + SQLite —— 没有外部数据库、没有云依赖,备份只需复制一个 data 目录。
  • 👨‍👩‍👧 一账号多角色 —— 注册不分身份,人人都能做饭、点菜;做饭人按「每一餐」认领(「我来做这顿」)。
  • 👆 选头像登录 —— 共享设备上无需打字,点自己的头像再输 6 位密码即可(像选用户头像)。
  • 自动饭局(像设闹钟) —— 在后台自由增删多条规则:餐次、时间、提前多久开、提前多久截止、生效星期都可自定义。到点自动开局、截止自动进入做饭、用餐后自动完成。
  • 🌱 贡献墙 —— GitHub 风格热力图,谁做饭最勤、谁最会点菜,绿格子一目了然。
  • 🖼️ 图片不拖后腿 —— 头像/菜品上传自动裁剪压缩(≤2MB)转 WebP 落盘(告别 base64 进库),加载飞快。
  • 🥛 牛奶布艺 UI —— 柔和拟物 + 青菜绿,移动端优先,可作为 PWA 添加到主屏。
  • 🌍 中英双语 —— 登录页与「我的 · 设置」一键切换。
  • 🔄 升级无痛 —— 拉新镜像即可,数据库自动迁移,登录态不丢;管理员还能在网页端一键更新(需挂载 Docker 套接字,否则降级为手动指引)。

📸 预览

选头像登录
👆 选头像登录
共享设备免打字,点头像 + 6 位密码
临近的饭局
🏠 临近的饭局
这几天吃什么、谁掌勺,一目了然
点菜 + 认领做饭
🍽️ 点菜 · 认领做饭
勾选想吃的,「我来做这顿」
谁点了什么 + 餐后打分
⭐ 大家点了什么 · 打分
谁点了什么,吃完互相评价
贡献墙
🌱 贡献墙
谁在为这个家默默下厨,绿格子见证
自动饭局规则
⏰ 自动饭局(像设闹钟)
到点自动开局、截止、流转

一条线把这些串起来:前一晚自动开好明天的饭局 → 家人各自点菜 → 谁做饭点一下「我来做这顿」 → 吃完打个分 → 月底贡献墙上看看谁最辛苦

🚀 快速开始

镜像地址:

  • 🐳 Docker Hubrendahuang/dacook:latest

方式一:docker run(最简单)

docker run -d --name dacook \
  -p 3000:3000 \
  -v ./data:/data \
  --restart unless-stopped \
  rendahuang/dacook:latest

打开 http://<你的NAS地址>:3000,第一个注册的人即成为管理员。完事。

方式二:docker compose(推荐,便于升级)

curl -O https://raw.githubusercontent.com/RendaHuang/DaCook/main/docker-compose.yml
docker compose up -d

飞牛 / 群晖等 NAS 也可以直接在「Docker / Container Manager」里搜索镜像 rendahuang/dacook 创建容器: 端口映射 3000,把容器内 /data 映射到一个你方便备份的目录即可。

无需设置任何环境变量。如需自定义,可选:

变量 默认 说明
TZ Asia/Shanghai 时区,影响自动饭局时间
AUTH_SECRET 自动生成 会话签名密钥(留空自动生成并存到 data/auth.secret
CRON_SECRET 自动生成 定时触发端点密钥
COOKIE_SECURE 自动 会话 Cookie 是否强制 Secure;默认按请求协议判断,HTTPS 反代识别异常时可设为 1

📖 入门指南(5 分钟上手)

  1. 部署并打开 —— 用上面任一方式启动,浏览器访问 http://<NAS>:3000
  2. 建立家庭 —— 首次进入是引导页:填家庭名 + 你的昵称 + 6 位密码,你成为管理员
  3. 家人加入 —— 家人各自打开同一地址 →「注册」,填昵称 + 6 位密码即可。之后登录只需在列表里点自己的头像再输密码。 (管理员可在「我的 → 家庭管理」里设置注册口令或关闭注册。)
  4. 添加菜品 —— 进「菜品」把全家拿手菜加进来(可拍照,自动压缩)。
  5. 开一顿饭局 —— 首页或「饭局」点「开饭局」,选餐次/时间/截止;家人进去勾选想吃的,谁做饭点「我来做这顿」。
  6. 设置自动饭局 —— 「我的 → 家庭管理 → 自动饭局」像设闹钟一样添加规则: 例如「每日午餐 12:00、前一天 20:00 自动开、提前 2 小时截止」。以后每天自动开局、自动流转。
  7. 看贡献墙 —— 「贡献」页用绿格子记录每个人做饭/点菜的活跃度。
  8. 切换语言 —— 登录页或「我的 → 语言」可在中文 / English 间切换。

想换语言或备份?语言在「我的」里随时切;备份只要复制 data 目录。

🔄 升级到新版本

docker compose pull && docker compose up -d
# docker run 方式:docker pull rendahuang/dacook:latest 后重新创建容器

数据与密钥都在 data 卷里,升级时数据库会自动迁移,登录态保持不变。 想全自动更新可搭配 Watchtower

网页端一键更新(可选):在「家庭管理 → 关于与更新」可查看版本、点按钮自动拉新镜像并重建容器。 需要让容器能访问 Docker:在 docker-compose.yml 里挂载 /var/run/docker.sock 并以可访问该套接字的用户运行(见 compose 注释)。 未挂载或权限不足时会自动降级为显示手动更新命令,不影响使用。

💾 备份

整个应用的状态只在一个地方:你映射出来的 data 目录(包含 app.dbuploads/)。 定时复制这个目录即是完整备份;恢复时放回去再启动即可。

🛠️ 本地开发

git clone https://github.com/RendaHuang/DaCook.git
cd GanCook
npm install
cp .env.example .env.local   # 本地可按需修改
npm run db:migrate           # 初始化 SQLite
npm run dev                  # http://localhost:3000

🧱 技术栈

  • Next.js 16(App Router · Server Actions)+ React 19 + TypeScript
  • SQLite + Drizzle ORMbetter-sqlite3
  • 鉴权:bcrypt + jose 签名 JWT + httpOnly Cookie
  • 图片sharp 压缩转 WebP 落盘
  • 调度:进程内 node-cron(启动钩子 instrumentation.ts 拉起)
  • 样式:TailwindCSS v4 + 自建「牛奶布艺」设计系统 + Framer Motion

🤝 贡献

欢迎 Issue / PR!开发约定见 CONTRIBUTING.md

📄 License

MIT · Made with ❤️ for family dinners

About

家庭用干饭点菜,增加生活仪式感!基于Gloridust/GanCook二开,优化了界面,Fork了RendaHuang/DaCook的设计,使用VibeCoding维护

Resources

Contributing

Stars

0 stars

Watchers

0 watching

Forks

Releases

Packages

Contributors

Languages