# turnTable **Repository Path**: code_xiaohui/turn-table ## Basic Information - **Project Name**: turnTable - **Description**: No description available - **Primary Language**: Unknown - **License**: Not specified - **Default Branch**: master - **Homepage**: None - **GVP Project**: No ## Statistics - **Stars**: 0 - **Forks**: 0 - **Created**: 2026-02-20 - **Last Updated**: 2026-02-26 ## Categories & Tags **Categories**: Uncategorized **Tags**: None ## README # Turntable - 学习期望随机转盘 [![License: MIT](https://img.shields.io/badge/License-MIT-yellow.svg)](https://opensource.org/licenses/MIT) [![Next.js](https://img.shields.io/badge/Next.js-16.1.6-black)](https://nextjs.org/) [![TypeScript](https://img.shields.io/badge/TypeScript-5.x-blue)](https://www.typescriptlang.org/) 一个基于 Next.js 构建的时间管理工具,通过随机转盘的方式帮助你选择学习任务或业余爱好,让你的时间更有意义。 ## 功能特性 - **随机转盘** - 通过转盘随机选择学习任务或业余爱好 - **任务管理** - 添加、完成、删除学习任务,支持按类型筛选 - **爱好管理** - 记录和管理你的业余爱好 - **番茄钟** - 内置番茄工作法计时器,提升专注力 - **思维导图** - 可视化思维导图编辑器,支持多种布局 - **AI 生成思维导图** - 使用 LangChain + DeepSeek AI 智能生成思维导图 - **文档协作编辑** - 基于 Tiptap + Yjs + WebSocket 的实时多人协作编辑 - **餐饮计划** - AI 智能生成健康饮食和运动计划 - **用户认证** - 完整的用户注册、登录、登出功能 - **响应式设计** - 完美适配桌面端和移动端 - **黑白简洁风格** - 清晰简洁的用户界面 ## 技术栈 - **框架**: Next.js 16.1.6 (App Router) - **构建工具**: Turbopack - **语言**: TypeScript - **样式**: Tailwind CSS 4.x - **数据库**: SQLite (better-sqlite3) - **编辑器**: Tiptap (基于 ProseMirror 的富文本编辑器) - **实时协作**: Yjs + y-websocket + y-indexeddb - **思维导图**: simple-mind-map - **AI 集成**: LangChain, DeepSeek API / Anthropic - **认证**: JWT (jose) - **密码加密**: bcryptjs ## 快速开始 ### 环境要求 - Node.js 18.0 或更高版本 - npm、yarn、pnpm 或 bun - DeepSeek API 密钥(用于 AI 生成思维导图和餐饮计划功能) - Anthropic API 密钥(可选,用于替代 DeepSeek) ### 安装依赖 ```bash # 克隆仓库 git clone https://gitee.com/code_xiaohui/turn-table.git # 进入项目目录 cd turn-table # 安装依赖 npm install ``` ### 环境配置 ```bash # 复制环境变量模板 cp .env.example .env # 编辑 .env 文件,配置必要的环境变量 DEEPSEEK_API_KEY=your_deepseek_api_key_here # 可选:使用 Anthropic 作为替代 ANTHROPIC_API_KEY=your_anthropic_api_key_here ``` 获取 DeepSeek API 密钥:https://platform.deepseek.com/ ### 开发 ```bash # 启动开发服务器 npm run dev # 启动 WebSocket 协作服务器(需要同时运行) npm run dev:all ``` 打开 [http://localhost:3000](http://localhost:3000) 查看应用。 ### 构建 ```bash # 构建生产版本 npm run build # 启动生产服务器 npm run start ``` ## 项目结构 ``` turntable/ ├── src/ │ ├── app/ # Next.js App Router 页面 │ │ ├── api/ # API 路由 │ │ │ ├── ai-mindmap/ # AI 生成思维导图 API │ │ │ ├── auth/ # 用户认证 API │ │ │ ├── document-folders/# 文档文件夹 API │ │ │ ├── documents/ # 文档管理 API │ │ │ ├── hobbies/ # 爱好管理 API │ │ │ ├── meal-plan/ # AI 生成餐饮计划 API │ │ │ ├── meal-plans/ # 餐饮计划历史 API │ │ │ ├── mindmap-folders/# 思维导图文件夹 API │ │ │ ├── mindmaps/ # 思维导图 API │ │ │ ├── tasks/ # 任务管理 API │ │ │ ├── video-folders/ # 视频文件夹 API │ │ │ ├── video-progress/ # 视频播放进度 API │ │ │ └── videos/ # 视频管理 API │ │ ├── documents/ # 文档协作页面 │ │ │ └── [id]/edit/ # 文档编辑页面 │ │ ├── hobbies/ # 爱好管理页面 │ │ ├── login/ # 登录页面 │ │ ├── meal-plan/ # 餐饮计划页面 │ │ ├── mindmap/ # 思维导图页面 │ │ ├── pomodoro/ # 番茄钟页面 │ │ ├── tasks/ # 任务管理页面 │ │ ├── globals.css # 全局样式 │ │ ├── layout.tsx # 根布局 │ │ └── page.tsx # 首页(转盘) │ ├── components/ # 可复用组件 │ │ ├── CollaborativeEditor.tsx # 协作编辑器 │ │ ├── DocumentHeader.tsx # 文档头部组件 │ │ ├── MindMapEditor.tsx # 思维导图编辑器 │ │ └── Navbar.tsx # 导航栏 │ └── lib/ # 工具库 │ ├── auth.ts # 认证相关 │ ├── db.ts # 数据库操作 │ ├── mindmap-tool.ts # 思维导图生成工具 │ ├── useAuth.ts # 认证 Hook │ └── utils.ts # 工具函数 ├── server/ │ └── ws-server.ts # WebSocket 协作服务器 ├── public/ # 静态资源 ├── .env.example # 环境变量模板 ├── package.json ├── tsconfig.json └── README.md ``` ## 功能说明 ### 转盘功能 - 添加学习任务到任务列表 - 点击"开始转动"随机选择任务 - 抽中后可直接标记完成 - 爱好转盘抽中后自动添加到任务列表 ### 任务管理 - 创建学习类型或爱好类型的任务 - 标记任务完成状态 - 按类型筛选任务 - 删除任务 ### 番茄钟 - 自定义工作和休息时长 - 自动切换工作和休息模式 - 记录完成的番茄数 ### 思维导图 - 创建和管理多个思维导图 - 支持多种布局:逻辑结构、思维导图、组织结构、树状图 - 添加子节点、同级节点 - 展开/收起节点 - 导出为 PNG 图片 - **AI 智能生成** - 通过自然语言描述自动生成思维导图结构 - 支持文件夹分类管理 ### 文档协作编辑 - 创建和管理文档 - **实时协作编辑** - 多人同时编辑同一文档 - **光标显示** - 显示其他用户的编辑位置和颜色 - **离线支持** - 使用 IndexedDB 本地缓存,支持离线编辑 - **版本同步** - 在线时自动同步到服务器 - 支持文件夹分类管理 - 可设置文档为公开访问 ### 健康计划设计 - 输入个人需求和偏好 - **AI 智能生成** - 生成个性化饮食和运动计划 - 设置运动强度、类型、频率 - 保存历史记录 - 查看和删除历史记录 ### 用户认证 - 用户注册和登录 - JWT token 认证 - 安全密码存储(bcrypt 加密) ## API 接口 ### 用户认证 API | 方法 | 路径 | 描述 | |------|------|------| | POST | /api/auth/register | 用户注册 | | POST | /api/auth/login | 用户登录 | | POST | /api/auth/logout | 用户登出 | | GET | /api/auth/me | 获取当前用户信息 | | GET | /api/auth/ws-token | 获取 WebSocket 连接令牌 | ### 任务 API | 方法 | 路径 | 描述 | |------|------|------| | GET | /api/tasks | 获取所有任务 | | POST | /api/tasks | 创建新任务 | | PUT | /api/tasks | 更新任务状态 | | DELETE | /api/tasks | 删除任务 | ### 爱好 API | 方法 | 路径 | 描述 | |------|------|------| | GET | /api/hobbies | 获取所有爱好 | | POST | /api/hobbies | 创建新爱好 | | DELETE | /api/hobbies | 删除爱好 | ### 思维导图 API | 方法 | 路径 | 描述 | |------|------|------| | GET | /api/mindmaps | 获取所有思维导图 | | POST | /api/mindmaps | 创建新思维导图 | | PUT | /api/mindmaps | 更新思维导图 | | DELETE | /api/mindmaps | 删除思维导图 | ### 思维导图文件夹 API | 方法 | 路径 | 描述 | |------|------|------| | GET | /api/mindmap-folders | 获取所有文件夹 | | POST | /api/mindmap-folders | 创建新文件夹 | | PUT | /api/mindmap-folders | 更新文件夹 | | DELETE | /api/mindmap-folders | 删除文件夹 | ### AI 生成思维导图 API | 方法 | 路径 | 描述 | |------|------|------| | POST | /api/ai-mindmap | 使用 AI 生成思维导图 | **请求示例:** ```json { "prompt": "创建一个关于学习计划的主题,包括日常学习、复习计划、目标设定等分支", "title": "学习计划" } ``` ### 文档 API | 方法 | 路径 | 描述 | |------|------|------| | GET | /api/documents | 获取所有文档 | | POST | /api/documents | 创建新文档 | | PUT | /api/documents/[id] | 更新文档 | | DELETE | /api/documents/[id] | 删除文档 | ### 文档文件夹 API | 方法 | 路径 | 描述 | |------|------|------| | GET | /api/document-folders | 获取所有文件夹 | | POST | /api/document-folders | 创建新文件夹 | | PUT | /api/document-folders | 更新文件夹 | | DELETE | /api/document-folders | 删除文件夹 | ### 健康计划 API | 方法 | 路径 | 描述 | |------|------|------| | GET | /api/meal-plans | 获取所有餐饮计划 | | POST | /api/meal-plans | 保存餐饮计划 | | DELETE | /api/meal-plans | 删除餐饮计划 | | POST | /api/meal-plan | AI 生成餐饮计划 | ### AI 生成餐饮计划 API | 方法 | 路径 | 描述 | |------|------|------| | POST | /api/meal-plan | 使用 AI 生成餐饮计划 | **请求示例:** ```json { "prompt": "我需要减脂,每周锻炼3次,喜欢中餐", "exerciseIntensity": "中等", "exerciseType": "有氧+力量", "exerciseFrequency": "每周3次" } ``` ## 使用示例 ### 用户认证 1. 访问登录页面 2. 点击"注册"创建新账户 3. 使用用户名和密码登录 4. 登录后可以访问所有功能 ### AI 生成思维导图 1. 访问思维导图页面 2. 点击 "AI生成" 按钮 3. 输入提示词,例如: - "创建一个关于学习计划的主题,包括日常学习、复习计划、目标设定等分支" - "创建一个关于项目管理的思维导图,包括需求分析、设计、开发、测试、部署等阶段" - "创建一个关于个人成长的主题,包括技能提升、健康管理、人际关系等" 4. (可选)输入思维导图标题 5. 点击 "生成" 按钮 6. AI 会自动生成思维导图并保存到数据库 ### 文档协作编辑 1. 访问文档页面 2. 点击 "新建文档" 创建新文档 3. 输入文档标题,设置是否公开 4. 点击文档进入编辑页面 5. 将编辑链接分享给其他用户 6. 多人同时编辑,实时看到彼此的光标和内容 ### 提示词编写技巧 - **明确主题**:清晰描述思维导图的主题 - **指定分支**:列出你希望包含的主要分支 - **提供细节**:可以描述每个分支下应该包含的内容 - **使用自然语言**:用日常语言描述,AI 会理解并转换为结构化内容 **示例提示词:** ``` 创建一个关于年度学习计划的思维导图,包括以下分支: - 技术学习:前端、后端、数据库 - 软技能:沟通、团队协作、项目管理 - 语言学习:英语、日语 - 考证计划:PMP、AWS ``` ### 餐饮计划 1. 访问餐饮计划页面 2. 输入你的需求,如"我需要减脂" 3. 选择运动强度(低/中/高) 4. 选择运动类型(有氧/力量/混合) 5. 选择运动频率 6. 点击"生成计划" 7. AI 生成饮食和运动计划后,可保存到历史记录 ## 贡献指南 欢迎提交 Issue 和 Pull Request! 1. Fork 本仓库 2. 创建特性分支 (`git checkout -b feature/AmazingFeature`) 3. 提交更改 (`git commit -m 'Add some AmazingFeature'`) 4. 推送到分支 (`git push origin feature/AmazingFeature`) 5. 提交 Pull Request ## 许可证 本项目采用 MIT 许可证 - 详见 [LICENSE](LICENSE) 文件 ## 联系方式 - 项目地址: [https://gitee.com/code_xiaohui/turn-table](https://gitee.com/code_xiaohui/turn-table) - 问题反馈: [https://gitee.com/code_xiaohui/turn-table/issues](https://gitee.com/code_xiaohui/turn-table/issues) ## 致谢 - [Next.js](https://nextjs.org/) - React 框架 - [Tailwind CSS](https://tailwindcss.com/) - CSS 框架 - [simple-mind-map](https://github.com/wanglin2/mind-map) - 思维导图库 - [Tiptap](https://tiptap.dev/) - 富文本编辑器 - [Yjs](https://yjs.dev/) - 实时协作框架 - [LangChain](https://js.langchain.com/) - AI 应用框架 - [DeepSeek](https://platform.deepseek.com/) - 大语言模型