一个现代化的全栈待办事项管理应用,集成了 AI 智能助手功能。使用 Node.js + SQLite 构建后端,支持用户认证、待办事项 CRUD 操作,并通过 Google Gemini AI 提供智能任务管理建议。
- 演示账号:test0
- 演示账号密码:123456 -(可以用这个登上演示站尝试一下功能~)
- ✅ 创建、编辑、删除待办事项
- ✅ 设置截止时间并自动显示时间状态(逾期/今天/未来)
- ✅ 一键标记完成/未完成
- ✅ 智能排序(按截止时间自动排序)
- ✅ 统计数据展示(总数/待完成/已完成)
- 🎯 基于 Google Gemini 2.5 Flash 的智能对话
- 🔧 支持通过自然语言操作待办事项
- 📋 AI 可执行命令:
ADD- 添加新任务(支持同时设置截止时间)COMPLETE- 标记任务完成DELETE- 删除任务UPDATE- 更新任务名称SETDUEDATE- 设置/修改截止时间
- 💡 主动分析任务列表并给出优化建议
- 🎨 Markdown 渲染支持(代码高亮、表格、列表等)
- 💬 会话历史保存
- 🔐 用户注册/登录(JWT 认证)
- 👤 多用户支持,数据隔离
- 🔑 安全的密码加密存储
- 🎫 管理员权限系统
- 👨💼 管理员面板(用户管理、权限控制)
- 👀 查看所有用户列表
- 🎫 AI 权限管理:
- 授予用户 AI 使用权限
- 设置权限类型(无限制/限时/按天数)
- 查看权限过期时间
- 撤销权限
- 📊 用户统计信息
- 🗑️ 删除用户账号
- 💻 桌面端:左右分栏布局(待办事项 2/3 + AI 聊天 1/3)
- 📱 移动端:底部导航栏切换视图
- 🎨 现代化 UI 设计,支持浅色主题
- ⌨️ 多行输入支持(Shift+Enter 换行,Enter 发送)
- HTML5 / CSS3 - 原生实现,无框架依赖
- JavaScript (ES6+) - 模块化代码组织
- Fetch API - 异步数据交互
- 响应式设计 - 移动优先,多断点适配
- Node.js + Express - RESTful API 服务器
- SQLite3 - 轻量级数据库
- JWT - 用户认证
- bcryptjs - 密码加密
- Python + Flask - Gemini API 代理服务
- Google Generative AI - Gemini 2.5 Flash 模型
- CORS - 跨域支持
- Node.js >= 14.0.0
- Python >= 3.8
- npm 或 yarn
git clone https://github.com/Thelia-Lzr/Project-Todo.git
cd Project-Todo本项目由 GitHub 用户 Thelia-Lzr 维护。仓库地址:https://github.com/Thelia-Lzr/Project-Todo
# 复制环境变量示例文件
cp .env.example .env
# 编辑 .env 文件,设置 JWT 密钥
# JWT_SECRET=your-secret-key-here# 进入 backend 目录
cd backend
# 复制环境变量示例文件
cp .env.example .env
# 编辑 .env 文件,添加你的 Gemini API Key
# GEMINI_API_KEY=your_gemini_api_key_here
# (可选)启用 OpenRouter 支持
# OPENROUTER_API_KEY=sk-or-v1-your-openrouter-key
# OPENROUTER_DEFAULT_MODEL=openrouter/auto
# OPENROUTER_MODEL_OPTIONS=["openrouter/deepseek-r1:free","meta-llama/llama-3-70b-instruct"]
# OPENROUTER_REFERER=https://yourdomain.com
# OPENROUTER_APP_NAME=TodoList AI Assistant获取 Gemini API Key:
- 访问 Google AI Studio
- 登录 Google 账号
- 创建 API Key
- 将 API Key 填入
backend/.env文件
# 返回项目根目录
cd ..
# 安装依赖
npm install# 进入 backend 目录
cd backend
# 创建虚拟环境(可选但推荐)
python -m venv venv
# 激活虚拟环境
# Windows:
venv\Scripts\activate
# macOS/Linux:
source venv/bin/activate
# 安装依赖
pip install -r requirements.txt终端 1 - 启动 Node.js 服务器:
# 在项目根目录
npm start
# 服务器运行在 http://localhost:${PORT}(.env 中的 PORT,默认 3000)终端 2 - 启动 Python AI 服务:
# 在 backend 目录
cd backend
python main.py
# AI 服务运行在 http://localhost:5000# 可以使用 concurrently 或 pm2 同时启动两个服务
npm run dev打开浏览器访问:http://localhost:3000(如有修改端口,请以 .env 中的 PORT 为准,默认 3000)
- 首次使用需要注册账号
- 输入用户名、密码(可选邮箱)
- 登录后即可使用全部功能
- 在输入框中输入任务内容
- (可选)选择截止时间
- 点击"添加"按钮
- 点击"设置 API Key"
- 输入你的 Gemini API Key
- 点击保存
-
自然语言创建任务:
- "帮我创建一个任务:明天下午3点完成项目报告"
- AI 会自动解析并创建带截止时间的任务
-
管理任务:
- "把第一个任务标记为完成"
- "删除所有已完成的任务"
- "将任务3的截止时间改为后天"
-
获取建议:
- "分析一下我的任务列表"
- "哪些任务最紧急?"
- "帮我整理一下待办事项"
- 第一个注册的用户自动成为管理员
- 管理员账号(用户ID = 1)拥有以下特权:
- 无限制使用AI功能(永久有效)
- 访问管理员面板
- 创建新用户账号
- 管理所有用户的权限
- 删除用户账号(不能删除自己)
- 确保你是第一个注册的用户(管理员)
- 登录后访问
http://localhost:${PORT}/admin.html - 输入管理员密码验证身份
创建新用户
- 点击"+ 添加用户"按钮
- 填写用户信息:
- 用户名:必填,不能与已有用户重复
- 密码:必填,至少6个字符
- 邮箱:可选
- AI 权限类型:
- 无限制:永久使用AI功能
- 有限期(默认):限制使用期限
- 有效天数:如果选择"有限期",设置天数(默认30天)
- 点击"添加"完成创建
注意:注册功能仅在数据库为空时开放(用于创建管理员)。之后所有用户必须由管理员在管理面板中创建。
查看用户列表
- 显示所有注册用户及其基本信息
- 显示AI权限状态和过期时间
编辑 AI 权限
- 点击用户旁的"编辑权限"按钮
- 修改权限类型或有效天数
- 保存更改
删除用户
- 点击"删除"按钮(需确认)
- 管理员账号不能被删除
管理员可以在管理面板中管理 Gemini API Key:
查看当前 API Key
- API Key 默认隐藏显示(显示前8位和后4位)
- 点击眼睛图标可显示/隐藏完整的 API Key
修改 API Key
- 点击"修改 API Key"按钮
- 输入新的 API Key(需要以
AIza开头) - 再次输入确认
- 保存后需要重启后端服务才能生效
查看使用配额
- 点击"🔄 刷新配额"按钮检查当前 API 状态
- 显示 API Key 是否有效
- 显示当前使用的模型信息
- 使用限制(Gemini 2.0 Flash 免费版):
- 每分钟请求数(RPM):15次
- 每分钟Token数(TPM):1,000,000 tokens
- 每天请求数(RPD):1,500次
- 显示支持的功能列表
注意:
- API Key 保存在服务器端的
backend/.env文件中,不会暴露给普通用户 - Gemini API 免费版主要受请求频率限制,而非月度配额
- 如果遇到 429 错误,说明达到了速率限制,需要等待1分钟后重试
- 无限制(UNLIMITED):用户可永久使用AI功能,无时间限制
- 有限期(LIMITED):权限在指定天数后自动过期,需要管理员重新授予
Project-Todo/
├── backend/ # Python AI 服务
│ ├── main.py # Flask 应用入口
│ ├── requirements.txt # Python 依赖
│ ├── .env.example # 环境变量示例
│ └── venv/ # Python 虚拟环境(git忽略)
├── public/ # 前端静态文件
│ ├── index.html # 主页面
│ ├── admin.html # 管理员面板
│ ├── script.js # 前端逻辑
│ ├── admin-script.js # 管理员面板逻辑
│ ├── style.css # 样式文件
│ ├── admin-style.css # 管理员面板样式
│ └── time-utils.js # 时间处理工具
├── routes/ # Node.js 路由
│ ├── auth.js # 认证路由
│ ├── todos.js # 待办事项路由
│ ├── chat.js # 聊天路由
│ ├── permissions.js # 权限管理路由
│ └── admin.js # 管理员路由
├── auth.js # JWT 认证中间件
├── db.js # 数据库初始化
├── server.js # Node.js 服务器入口
├── package.json # Node.js 依赖配置
├── .env.example # 环境变量示例
├── .gitignore # Git 忽略文件
└── README.md # 项目说明文档
POST /api/auth/register- 用户注册POST /api/auth/login- 用户登录POST /api/auth/logout- 用户登出
GET /api/todos- 获取待办列表POST /api/todos- 创建待办事项PUT /api/todos/:id- 更新待办事项DELETE /api/todos/:id- 删除待办事项
POST /api/gemini/init- 初始化 Gemini APIPOST /api/gemini/chat- 发送聊天消息
GET /api/permissions- 获取当前用户权限POST /api/permissions/grant- 授予用户权限(管理员)DELETE /api/permissions/revoke/:userId- 撤销用户权限(管理员)
POST /api/admin/verify- 验证管理员身份GET /api/admin/users- 获取所有用户列表(管理员)DELETE /api/admin/users/:id- 删除用户(管理员)
AI 使用特殊命令格式来操作待办事项:
🔧[CMD:COMMAND|参数1|参数2|...]
- 添加任务
🔧[CMD:ADD|任务名称|截止时间]
示例:🔧[CMD:ADD|完成报告|2025-10-26 18:00]
- 标记完成
🔧[CMD:COMPLETE|任务ID]
示例:🔧[CMD:COMPLETE|1]
- 删除任务
🔧[CMD:DELETE|任务ID]
示例:🔧[CMD:DELETE|2]
- 更新任务
🔧[CMD:UPDATE|任务ID|新名称]
示例:🔧[CMD:UPDATE|1|修改后的报告]
- 设置截止时间
🔧[CMD:SETDUEDATE|任务ID|截止时间]
示例:🔧[CMD:SETDUEDATE|1|2025-10-26 18:00]
特殊:🔧[CMD:SETDUEDATE|@latest|2025-10-26 18:00]
-
配置环境变量
- 设置强密码的
JWT_SECRET - 配置生产环境的
GEMINI_API_KEY
- 设置强密码的
-
构建数据库
- 首次运行会自动创建 SQLite 数据库
-
使用 PM2 管理进程
# 安装 PM2
npm install -g pm2
# 启动 Node.js 服务
pm2 start server.js --name "todo-backend"
# 启动 Python 服务
pm2 start backend/main.py --name "todo-ai" --interpreter python3
# 保存配置
pm2 save
pm2 startup- 配置反向代理(Nginx 示例)
server {
listen 80;
server_name yourdomain.com;
location / {
proxy_pass http://localhost:3000; # 请将 3000 替换为你实际配置的端口(如 .env 中的 PORT,默认 3000)
proxy_http_version 1.1;
proxy_set_header Upgrade $http_upgrade;
proxy_set_header Connection 'upgrade';
proxy_set_header Host $host;
proxy_cache_bypass $http_upgrade;
}
location /api/gemini/ {
proxy_pass http://localhost:5000/api/gemini/;
}
}欢迎贡献!请遵循以下步骤:
- Fork 本项目
- 创建新分支 (
git checkout -b feature/AmazingFeature) - 提交更改 (
git commit -m 'Add some AmazingFeature') - 推送到分支 (
git push origin feature/AmazingFeature) - 开启 Pull Request
- 添加任务优先级功能
- 支持任务分类/标签
- 任务搜索和过滤
- 数据导出功能
- 深色主题支持
- 微信小程序版本
- 多语言支持
本项目采用 MIT 许可证 - 详见 LICENSE 文件
Thelia
- Google Gemini - 提供强大的 AI 能力
- Express - Node.js Web 框架
- Flask - Python Web 框架
- SQLite - 轻量级数据库
如有问题或建议,请通过以下方式联系:
- 提交 Issue
- 发送邮件至:[email protected]
⭐ 如果这个项目对你有帮助,请给个 Star 支持一下!