返回文档首页

部署文档

开发者部署指南和技术文档

🛠️ 技术栈

后端技术

  • Node.js - 服务器运行环境(建议 v16+)
  • Express.js - Web应用框架
  • SQLite - 轻量级关系型数据库
  • JWT - JSON Web Token认证
  • bcryptjs - 密码加密
  • cors - 跨域资源共享
  • multer - 文件上传处理

前端技术

  • 原生JavaScript - 无框架依赖,兼容性好
  • Chart.js - 数据可视化图表库
  • CSS3 - 现代化样式和动画
  • HTML5 - 语义化标记
  • Font Awesome - 图标库

开发工具

  • nodemon - 开发时自动重启服务器
  • pm2 - 生产环境进程管理
  • sqlite3 - SQLite数据库驱动

💻 本地部署

环境要求

安装步骤

1. 克隆或下载项目

# 使用Git克隆
git clone https://github.com/your-username/todo-system.git
cd todo-system

# 或者直接下载ZIP文件并解压

2. 安装依赖

npm install

3. 初始化数据库

npm run init-db

4. 启动开发服务器

# 开发模式(自动重启)
npm run dev

# 或者直接启动
npm start

5. 访问应用

打开浏览器访问:http://localhost:3000

开发提示

  • 使用 npm run dev 可以在代码修改时自动重启服务器
  • 数据库文件 database.db 会在首次启动时自动创建
  • 默认端口为3000,可通过环境变量 PORT 修改

🚀 服务器部署

部署到宝塔面板

1. 服务器环境准备

2. 上传项目文件

# 方法1:使用宝塔文件管理器上传
# 将整个项目文件夹上传到网站根目录

# 方法2:使用Git克隆
cd /www/wwwroot/your-domain
git clone https://github.com/your-username/todo-system.git .

3. 安装生产依赖

cd /www/wwwroot/your-domain
npm install --production

4. 配置PM2进程管理

# 全局安装PM2
npm install -g pm2

# 启动应用
pm2 start server.js --name "todo-system"

# 保存PM2配置
pm2 save

# 设置开机自启
pm2 startup

5. 配置反向代理

在宝塔面板中设置反向代理:

6. 配置SSL证书(推荐)

部署到Docker

1. 创建Dockerfile

FROM node:16-alpine

WORKDIR /app

COPY package*.json ./
RUN npm install --production

COPY . .

EXPOSE 3000

CMD ["npm", "start"]

2. 构建和运行容器

# 构建镜像
docker build -t todo-system .

# 运行容器
docker run -d \
  --name todo-system \
  -p 3000:3000 \
  -v $(pwd)/database.db:/app/database.db \
  todo-system

环境变量配置

变量名 默认值 说明
PORT 3000 服务器端口
NODE_ENV development 运行环境(development/production)
JWT_SECRET your-secret-key JWT签名密钥
DB_PATH ./database.db 数据库文件路径

📡 API接口文档

认证相关

接口 方法 说明 参数
/api/auth/login POST 用户登录/注册/访客登录 {username, password, isGuest}
/api/user GET 获取当前用户信息 需要JWT Token

项目管理

接口 方法 说明 参数
/api/projects GET 获取项目列表 userId
/api/projects POST 创建项目 {name, description, color}
/api/projects/:id PUT 更新项目 {name, description, color}
/api/projects/:id DELETE 删除项目 -

类别管理

接口 方法 说明 参数
/api/categories GET 获取类别列表 userId
/api/categories POST 创建类别 {name, color}
/api/categories/:id PUT 更新类别 {name, color}
/api/categories/:id DELETE 删除类别 -

任务管理

接口 方法 说明 参数
/api/tasks GET 获取任务列表 userId, projectId, categoryId
/api/tasks POST 创建任务 {name, description, projectId, categoryId, priority, dueDate}
/api/tasks/:id PUT 更新任务 {name, description, status, priority, dueDate}
/api/tasks/:id DELETE 删除任务 -

统计信息

接口 方法 说明 参数
/api/stats GET 获取统计信息 userId
/api/stats/pomodoro GET 获取番茄钟统计 userId

🗄️ 数据库结构

用户表 (users)

字段 类型 说明
id INTEGER 主键,自增
username VARCHAR(50) 用户名,唯一
password VARCHAR(255) 加密密码
is_guest BOOLEAN 是否为访客
created_at DATETIME 创建时间

项目表 (projects)

字段 类型 说明
id INTEGER 主键,自增
name VARCHAR(100) 项目名称
description TEXT 项目描述
color VARCHAR(7) 项目颜色
user_id INTEGER 所属用户ID
created_at DATETIME 创建时间

类别表 (categories)

字段 类型 说明
id INTEGER 主键,自增
name VARCHAR(50) 类别名称
color VARCHAR(7) 类别颜色
user_id INTEGER 所属用户ID

任务表 (tasks)

字段 类型 说明
id INTEGER 主键,自增
name VARCHAR(200) 任务名称
description TEXT 任务描述
status VARCHAR(20) 任务状态
priority VARCHAR(10) 优先级
project_id INTEGER 所属项目ID
category_id INTEGER 所属类别ID
user_id INTEGER 所属用户ID
start_date DATETIME 开始时间
due_date DATETIME 截止时间
version INTEGER 版本号
created_at DATETIME 创建时间
updated_at DATETIME 更新时间

🔧 故障排除

常见问题

问题1:数据库连接失败

症状:启动时出现数据库连接错误

解决方案:

  • 检查SQLite数据库文件权限
  • 确保数据库文件路径正确
  • 运行 npm run init-db 重新初始化数据库

问题2:端口被占用

症状:启动时提示端口已被使用

解决方案:

  • 使用 lsof -i :3000 查看占用端口的进程
  • 杀死占用进程或更改端口
  • 设置环境变量 PORT=3001 使用其他端口

问题3:依赖安装失败

症状:npm install 过程中出现错误

解决方案:

  • 清除npm缓存:npm cache clean --force
  • 删除 node_modulespackage-lock.json
  • 重新运行 npm install
  • 检查Node.js版本是否符合要求

问题4:静态文件404

症状:CSS、JS文件无法加载

解决方案:

  • 检查 public 目录是否存在
  • 确认静态文件路径配置正确
  • 检查文件权限设置

性能优化建议

安全建议

💡 部署提示:建议在部署前先在测试环境完整测试所有功能,确保生产环境的稳定性和安全性。