# hoppin做饭
**Repository Path**: hoppin/hoppin-cooking
## Basic Information
- **Project Name**: hoppin做饭
- **Description**: qweqweqweqwe
- **Primary Language**: Unknown
- **License**: Not specified
- **Default Branch**: master
- **Homepage**: None
- **GVP Project**: No
## Statistics
- **Stars**: 0
- **Forks**: 0
- **Created**: 2026-10-23
- **Last Updated**: 2026-10-26
## Categories & Tags
**Categories**: Uncategorized
**Tags**: None
## README
# 🍳 食刻手记 · Cooking Journal
一方厨房,一本手记。
记录每一道菜的做法与心得,让每一次下厨都有迹可循。
**菜谱管理** · **烹饪笔记** · **AI 营养分析** · **购物清单** · **菜谱对比** · **分享海报**
## ✨ 功能特性
- **菜谱管理** — 创建、编辑、收藏菜谱,支持关键词 / 分类 / 标签 / 卡路里筛选与排序(服务端分页)
- **烹饪笔记与热力图** — 按日记录下厨情况,年度热力图 + 连续天数统计
- **AI 营养分析** — 一键分析每份菜谱的卡路里与营养成分(后端 AI 驱动)
- **购物清单** — 根据计划菜谱自动汇总食材清单
- **菜谱对比** — 并排对比两份菜谱的营养与做法
- **分享海报** — Canvas 本地渲染多种主题与比例的分享图
- **评论互动** — 菜谱评论区,支持 Markdown 子集与图片
## 🛠 技术栈
- 前端:React 19 · Vite · TypeScript · Tailwind CSS v4 · lucide-react · motion
- 托管:Express(`server.ts` 仅承载前端页面,无 API 路由)
- 后端:Java 服务 `hoppinzq-module-cooking`,接口契约见 [`docs/api.md`](docs/api.md)
## 🚀 快速开始
```bash
pnpm install # 安装依赖
pnpm run dev # 启动开发服务器(默认 http://localhost:3000)
```
> 开发时需保证后端可用(默认代理到 `http://127.0.0.1:3008` 测试环境)。
> 端口冲突自动顺延:3000 被占用时会依次尝试 3001、3002……
其他命令:
```bash
pnpm run build # 生产构建 → dist/(资源带 /cooking/ 前缀)
pnpm run preview # 预览构建产物
pnpm run lint # TypeScript 类型检查
```
## ⚙️ 环境配置
复制 `.env.example` 为 `.env.development`(默认配置即可直接使用):
| 变量 | 说明 | 默认值 |
| --- | --- | --- |
| `VITE_API_BASE_URL` | cooking 模块 API 地址 | `/app-api/cooking`(经 vite 代理) |
| `BACKEND_URL` | vite 代理目标后端 | `http://127.0.0.1:3008`(测试环境) |
| `VITE_BASE` | 构建产物 base 路径 | `/cooking/` |
| `VITE_ZAI_LOGIN_PAGE` | ZAI 登录页地址 | 内置默认值 |
| `VITE_ZAI_BACKEND_BASE` | ZAI 认证后端 | 内置默认值 |
生产环境不配置 `VITE_API_BASE_URL` 时,直连 `https://hoppinzq.com:3008/app-api/cooking`。
## 🔐 认证
- 读接口(`/app-api/cooking/**`)公开访问
- 写接口(`/admin-api/cooking/user/**`)需 ZAI 登录,Bearer token 过期自动刷新(详见 `src/api/auth.ts`)
## 📦 部署
生产部署于 `https://hoppinzq.com:3008/cooking/`:
```bash
pnpm run build
```
部署到其他路径时用 `VITE_BASE` 覆盖(根路径部署设 `VITE_BASE="/"`),
并同步更新 `index.html` 中的 SEO 头(canonical / Open Graph 等)。
## 📖 相关文档
- [`docs/api.md`](docs/api.md) — 后端接口契约(权威)
- [`CLAUDE.md`](CLAUDE.md) — 架构与开发约定