开发者部署指南和技术文档
# 使用Git克隆
git clone https://github.com/your-username/todo-system.git
cd todo-system
# 或者直接下载ZIP文件并解压
npm install
npm run init-db
# 开发模式(自动重启)
npm run dev
# 或者直接启动
npm start
打开浏览器访问:http://localhost:3000
npm run dev 可以在代码修改时自动重启服务器database.db 会在首次启动时自动创建PORT 修改# 方法1:使用宝塔文件管理器上传
# 将整个项目文件夹上传到网站根目录
# 方法2:使用Git克隆
cd /www/wwwroot/your-domain
git clone https://github.com/your-username/todo-system.git .
cd /www/wwwroot/your-domain
npm install --production
# 全局安装PM2
npm install -g pm2
# 启动应用
pm2 start server.js --name "todo-system"
# 保存PM2配置
pm2 save
# 设置开机自启
pm2 startup
在宝塔面板中设置反向代理:
http://127.0.0.1:3000$hostFROM node:16-alpine
WORKDIR /app
COPY package*.json ./
RUN npm install --production
COPY . .
EXPOSE 3000
CMD ["npm", "start"]
# 构建镜像
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/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 |
| 字段 | 类型 | 说明 |
|---|---|---|
| id | INTEGER | 主键,自增 |
| username | VARCHAR(50) | 用户名,唯一 |
| password | VARCHAR(255) | 加密密码 |
| is_guest | BOOLEAN | 是否为访客 |
| created_at | DATETIME | 创建时间 |
| 字段 | 类型 | 说明 |
|---|---|---|
| id | INTEGER | 主键,自增 |
| name | VARCHAR(100) | 项目名称 |
| description | TEXT | 项目描述 |
| color | VARCHAR(7) | 项目颜色 |
| user_id | INTEGER | 所属用户ID |
| created_at | DATETIME | 创建时间 |
| 字段 | 类型 | 说明 |
|---|---|---|
| id | INTEGER | 主键,自增 |
| name | VARCHAR(50) | 类别名称 |
| color | VARCHAR(7) | 类别颜色 |
| user_id | INTEGER | 所属用户ID |
| 字段 | 类型 | 说明 |
|---|---|---|
| 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 | 更新时间 |
症状:启动时出现数据库连接错误
解决方案:
npm run init-db 重新初始化数据库症状:启动时提示端口已被使用
解决方案:
lsof -i :3000 查看占用端口的进程PORT=3001 使用其他端口症状:npm install 过程中出现错误
解决方案:
npm cache clean --forcenode_modules 和 package-lock.jsonnpm install症状:CSS、JS文件无法加载
解决方案:
public 目录是否存在💡 部署提示:建议在部署前先在测试环境完整测试所有功能,确保生产环境的稳定性和安全性。