feat: initial lifelog project

- 待办事项(支持优先级、截止日期)
- 每日记录(上午/下午/晚上分条目)
- Go后端 + Gin + GORM + MySQL
- React前端 + TailwindCSS
This commit is contained in:
2026-07-28 16:22:46 +08:00
commit d495a2b798
32 changed files with 4501 additions and 0 deletions
+108
View File
@@ -0,0 +1,108 @@
# LifeLog 项目设计文档
## 1. 项目概述
- **项目名**LifeLog
- **定位**:个人日志与待办管理工具
- **核心功能**
1. 待办事项管理(增删改查,完成标记)
2. 每日三时段记录(上午/下午/晚上)
- **目标用户**:个人使用,简约高效
## 2. 技术栈
| 层 | 技术 |
|----|------|
| 后端 | Go + Gin 框架 |
| 前端 | React + Vite + TailwindCSS |
| 数据库 | MySQL (`rhett_claw`) |
| 部署 | 独立项目,端口 17010 |
## 3. 数据库设计
### 表:todos(待办事项)
| 字段 | 类型 | 说明 |
|------|------|------|
| id | BIGINT UNSIGNED AUTO_INCREMENT | 主键 |
| title | VARCHAR(255) NOT NULL | 事项标题 |
| done | TINYINT(1) NOT NULL DEFAULT 0 | 是否完成(0否 1是) |
| priority | TINYINT(1) NOT NULL DEFAULT 2 | 优先级(1高 2中 3低) |
| created_at | DATETIME NOT NULL DEFAULT CURRENT_TIMESTAMP | 创建时间 |
| updated_at | DATETIME NOT NULL DEFAULT CURRENT_TIMESTAMP ON UPDATE CURRENT_TIMESTAMP | 更新时间 |
### 表:daily_logs(每日记录)
| 字段 | 类型 | 说明 |
|------|------|------|
| id | BIGINT UNSIGNED AUTO_INCREMENT | 主键 |
| date | DATE NOT NULL UNIQUE | 日期(格式:2024-07-24 |
| morning | TEXT | 上午记录 |
| afternoon | TEXT | 下午记录 |
| evening | TEXT | 晚上记录 |
| created_at | DATETIME NOT NULL DEFAULT CURRENT_TIMESTAMP | 创建时间 |
| updated_at | DATETIME NOT NULL DEFAULT CURRENT_TIMESTAMP ON UPDATE CURRENT_TIMESTAMP | 更新时间 |
## 4. API 设计
### 待办事项(/api/todos
| 方法 | 路径 | 说明 |
|------|------|------|
| GET | /api/todos | 获取所有待办 |
| POST | /api/todos | 新增待办 |
| PUT | /api/todos/:id | 更新待办 |
| PATCH | /api/todos/:id/done | 标记完成/未完成 |
| DELETE | /api/todos/:id | 删除待办 |
### 每日记录(/api/logs
| 方法 | 路径 | 说明 |
|------|------|------|
| GET | /api/logs/:date | 获取某日记录(date格式:2024-07-24 |
| GET | /api/logs | 获取最近N条记录 |
| PUT | /api/logs/:date | 创建或更新某日记录 |
## 5. 前端页面
### 页面一:待办事项(/
- 顶部:标题 + 添加按钮
- 中部:待办列表(显示优先级、完成状态、标题)
- 支持:勾选完成、删除、筛选
### 页面二:每日记录(/logs)
- 日期选择器(顶部)
- 三个文本区域:上午 / 下午 / 晚上
- 自动保存(输入后延迟保存)
## 6. 项目结构
```
/var/www/lifelog/
├── cmd/
│ └── server/
│ └── main.go # 入口
├── internal/
│ ├── handler/ # HTTP handlers
│ ├── model/ # 数据模型
│ ├── repository/ # 数据库操作
│ └── service/ # 业务逻辑
├── web/ # 前端 React
│ ├── src/
│ │ ├── components/
│ │ ├── pages/
│ │ └── App.tsx
│ ├── index.html
│ └── vite.config.ts
├── docs/
│ └── plans/
├── go.mod
├── go.sum
└── Makefile
```
## 7. 部署
- 后端端口:**17010**
- 数据库:使用已有的 `rhett_claw`MySQL
- PM2 管理进程
+72
View File
@@ -0,0 +1,72 @@
# LifeLog 实现计划
## 阶段一:后端开发
### Task 1.1:初始化 Go 项目
- 初始化 go.mod
- 安装依赖:gin、gorm、mysql-driver
- 创建目录结构
- 验证:`go build ./...`
### Task 1.2:数据库初始化
- 连接 MySQLrhett_claw
- 自动建表(todos、daily_logs
- 验证:表创建成功
### Task 1.3Model 层
- 定义 Todo 模型
- 定义 DailyLog 模型
- 验证:模型定义正确
### Task 1.4Repository 层
- Todo CRUD 实现
- DailyLog CRUD 实现
- 验证:单元测试通过
### Task 1.5Service 层
- TodoService 实现
- DailyLogService 实现
- 验证:业务逻辑正确
### Task 1.6Handler 层 + 路由
- Todo HTTP handlers
- DailyLog HTTP handlers
- Gin 路由注册
- 验证:`curl localhost:17010/api/todos` 返回200
## 阶段二:前端开发
### Task 2.1:初始化 React 项目
- Vite + React + TypeScript
- 安装 TailwindCSS
- 验证:页面能运行
### Task 2.2:待办页面
- TodoList 组件
- TodoItem 组件
- AddTodo 表单
- API 调用(React Query
- 验证:CRUD 功能正常
### Task 2.3:每日记录页面
- DatePicker 组件
- DailyLogForm 组件(三个时段)
- 自动保存逻辑
- 验证:记录能保存和加载
### Task 2.4:页面美化
- 简约 UI 风格
- 响应式布局
- 验证:视觉符合设计
## 阶段三:部署
### Task 3.1:构建和启动
- 前端 `npm run build`
- 后端 `go build`
- PM2 配置并启动
- 验证:`curl localhost:17010` 返回200
### Task 3.2:收尾
- PM2 save
- 验证服务稳定运行