sudo mysql_secure_installation
# 创建数据库和用户
sudo mysql -u root -p
CREATE DATABASE mytools CHARACTER SET utf8mb4 COLLATE utf8mb4_unicode_ci;
CREATE USER 'mytools'@'localhost' IDENTIFIED BY '<强密码>';
GRANT ALL PRIVILEGES ON mytools.* TO 'mytools'@'localhost';
FLUSH PRIVILEGES;
MyTools — 个人效率工具集
一个基于 React + FastAPI 的全栈个人效率管理应用,提供待办事项、日程管理、工具箱、个人中心等功能。
✨ 功能特性
🏗 技术架构
技术栈
前端:
后端:
📁 项目结构
🚀 快速开始
环境要求
1. 克隆项目
2. 后端配置
编辑
.env文件,修改数据库和密钥配置:创建 MySQL 数据库:
启动后端开发服务器:
启动后会自动:
默认管理员:
admin/admin123(⚠️ 生产环境请立即修改!)3. 前端配置
开发模式启动:
访问 http://localhost:5173
Vite 已配置代理,
/api和/uploads请求会自动转发到localhost:8000,无需配置 CORS。4. 生产构建
📡 API 文档
启动后端后访问:http://localhost:8000/docs(Swagger UI)或 http://localhost:8000/redoc(ReDoc)
统一响应格式
所有接口均使用以下 JSON 结构:
code:0表示成功,非零表示错误message:人类可读的消息data:具体返回数据,类型因接口而异认证接口
/api/auth/login/api/auth/logout/api/auth/register/api/auth/me/api/auth/profile登录请求示例:
登录响应示例:
认证方式: 后续请求在
Authorization头中携带 Token:待办事项接口
/api/todos/api/todos/api/todos/{id}/api/todos/{id}/api/todos/{id}/api/todos/{id}/complete/api/todos/{id}/uncomplete/api/todos/{id}/attachments/api/todos/attachments/{id}查询参数(列表):
page:页码(默认 1)page_size:每页数量(默认 20)keyword:关键词搜索(标题/内容/简介)status:状态筛选(active/expired/completed)日程管理接口
/api/schedules/api/schedules/api/schedules/{id}/api/schedules/{id}查询参数:
start_date:开始日期(YYYY-MM-DD)end_date:结束日期(YYYY-MM-DD)工具箱接口
/api/tools/api/tools/api/tools/{id}/api/tools/{id}上传接口
/api/upload请求:
multipart/form-data,字段名file响应:
统计接口
/api/dashboard/stats响应:
健康检查
/api/health🗄 数据模型
User(用户)
admin/userTodo(待办)
active/expired/completedtodo-yellow/todo-blue/todo-green/todo-pinkScheduleEvent(日程事件)
Tool(工具)
text/encode/format/dev/calcbuiltin/customAttachment(附件)
🔐 安全说明
get_current_user依赖注入验证admin和user角色,admin 可管理所有用户数据📦 部署指南
生产环境目录结构
步骤一:服务器环境准备
步骤二:MySQL 配置
步骤三:部署后端
.env生产环境示例:步骤四:配置 systemd 服务
步骤五:部署前端
步骤六:配置 Nginx
HTTPS 配置(推荐):
步骤七:验证部署
常用运维命令
🛠 开发调试
后端调试
前端调试
环境变量
前端
.env.development:前端
.env.production:后端
.env:DATABASE_URLmysql+aiomysql://root:password@localhost:3306/mytools?charset=utf8mb4SECRET_KEYchange-me-in-productionALGORITHMHS256ACCESS_TOKEN_EXPIRE_MINUTES10080(7天)UPLOAD_DIRuploadsALLOWED_ORIGINShttp://localhost:5173❗ 常见问题
Q: 启动时报 “Table doesn’t exist”?
首次启动时 FastAPI 会在 lifespan 阶段自动建表。如果报错,请确认:
.env中的DATABASE_URL配置正确CREATE DATABASE mytools ...)Q: 如何修改默认管理员密码?
登录后通过前端 “关于” 页面的个人资料修改,或直接操作数据库:
Q: 前端请求 404?
开发模式下 Vite 会将
/api代理到localhost:8000。请确认:vite.config.ts中代理配置正确Q: 文件上传失败?
uploads/目录存在且有写入权限/uploads/路径的代理📄 License
Private — 仅供内部使用