Files
macrocc 46c72e4ceb docs(readme): 添加项目文档和说明
- 创建了完整的 README.md 文件
- 添加了项目特性介绍和功能说明
- 详细描述了技术栈和架构设计
- 提供了快速开始和安装指南
- 列出了项目结构和 API 接口文档
- 包含了测试和部署说明
- 添加了贡献指南和许可证信息
2026-04-30 00:29:50 +08:00

303 lines
6.6 KiB
Markdown

# 📚 LocoBook - 图书管理系统
一个基于 **Rust Loco** 后端和 **Vue 3** 前端的现代化图书管理系统。
## ✨ 特性
- 🔐 **用户认证**: JWT 基于 token 的登录/注册系统
- 📖 **图书管理**: 浏览、阅读图书,支持分页加载
- 📝 **阅读记录**: 自动保存阅读进度和历史记录
- 🎨 **现代 UI**: 使用 Tailwind CSS 4 构建的响应式界面
-**高性能**: Rust 后端提供快速稳定的 API 服务
- 🔧 **开发友好**: Vite 统一管理前后端,一键启动
## 🛠️ 技术栈
### 后端
- **框架**: [Loco.rs](https://loco.rs/) 0.16 (基于 Axum + SeaORM)
- **语言**: Rust
- **数据库**: SQLite
- **认证**: JWT
- **ORM**: SeaORM
### 前端
- **框架**: Vue 3.5 (Composition API)
- **构建工具**: Vite 8.0
- **路由**: Vue Router 4.5
- **状态管理**: Pinia 2.3
- **HTTP 客户端**: Axios 1.7
- **样式**: Tailwind CSS 4.2
## 📦 快速开始
### 前置要求
- [Rust](https://www.rust-lang.org/tools/install) (最新稳定版)
- [Node.js](https://nodejs.org/) (v18+)
- [Cargo Loco CLI](https://loco.rs/docs/getting-started/installation/)
### 安装
1. **克隆仓库**
```bash
git clone http://macrocc.com:3000/macrocc/locobook.git
cd locobook
```
2. **安装前端依赖**
```bash
npm install
```
3. **初始化数据库**
```bash
cd src-loco
cargo loco db migrate
cd ..
```
### 运行开发服务器
**一键启动前后端:**
```bash
npm run dev
```
这将:
- 启动后端服务器 (http://localhost:5150)
- 启动前端开发服务器 (http://localhost:5173)
- 自动打开浏览器
**单独启动:**
```bash
# 仅启动后端
cd src-loco && cargo loco start
# 仅启动前端
npm run dev:frontend
```
### 重启服务
修改 Rust 代码后需要重启:
```bash
npm run restart
```
## 📁 项目结构
```
locobook/
├── src-loco/ # Rust Loco 后端
│ ├── src/
│ │ ├── controllers/ # API 控制器
│ │ │ ├── auth.rs # 认证相关接口
│ │ │ ├── books.rs # 图书管理接口
│ │ │ └── reading.rs # 阅读记录接口
│ │ ├── models/ # 数据模型
│ │ │ ├── users.rs
│ │ │ ├── books.rs
│ │ │ └── reading_records.rs
│ │ ├── views/ # 响应视图
│ │ └── app.rs # 应用配置
│ ├── migration/ # 数据库迁移
│ ├── tests/ # 后端测试
│ └── config/ # 配置文件
├── src/ # Vue 3 前端
│ ├── views/ # 页面组件
│ │ ├── Login.vue
│ │ ├── Register.vue
│ │ ├── BookList.vue
│ │ ├── BookReader.vue
│ │ └── ReadingHistory.vue
│ ├── components/ # 通用组件
│ │ └── Navbar.vue
│ ├── api/ # API 封装
│ ├── router/ # 路由配置
│ └── main.js # 入口文件
├── package.json # 前端依赖和脚本
├── vite.config.js # Vite 配置
└── README.md
```
## 🔌 API 接口
### 认证接口
| 方法 | 路径 | 描述 | 认证 |
|------|------|------|------|
| POST | `/api/auth/register` | 用户注册 | ❌ |
| POST | `/api/auth/login` | 用户登录 | ❌ |
| POST | `/api/auth/verify` | 验证邮箱 | ❌ |
| GET | `/api/auth/current` | 获取当前用户 | ✅ |
### 图书接口
| 方法 | 路径 | 描述 | 认证 |
|------|------|------|------|
| GET | `/api/books` | 获取图书列表(分页) | ❌ |
| GET | `/api/books/:id` | 获取单本图书 | ❌ |
| POST | `/api/books` | 创建图书 | ✅ |
| PUT | `/api/books/:id` | 更新图书 | ✅ |
| DELETE | `/api/books/:id` | 删除图书 | ✅ |
**分页参数:**
```
GET /api/books?page=1&per_page=12
```
**响应格式:**
```json
{
"books": [...],
"total": 100,
"page": 1,
"per_page": 12,
"total_pages": 9
}
```
### 阅读记录接口
| 方法 | 路径 | 描述 | 认证 |
|------|------|------|------|
| POST | `/api/reading/record` | 保存阅读进度 | ✅ |
| GET | `/api/reading/history` | 获取阅读历史 | ✅ |
## 🧪 测试
### 运行后端测试
```bash
cd src-loco
# 运行所有测试
cargo test
# 运行特定模块测试
cargo test books
cargo test auth
# 运行单个测试
cargo test can_list_books_with_pagination
# 显示测试输出
cargo test -- --nocapture
```
测试文件位于 `src-loco/tests/requests/`:
- `auth.rs` - 认证接口测试
- `books.rs` - 图书接口测试
- `prepare_data.rs` - 测试数据准备
## 🎨 前端路由
| 路径 | 组件 | 描述 | 认证 |
|------|------|------|------|
| `/login` | Login | 登录页面 | ❌ |
| `/register` | Register | 注册页面 | ❌ |
| `/` | BookList | 图书列表 | ✅ |
| `/book/:id` | BookReader | 图书阅读器 | ✅ |
| `/history` | ReadingHistory | 阅读历史 | ✅ |
## ⚙️ 配置
### 后端配置
配置文件位于 `src-loco/config/`:
- `development.yaml` - 开发环境
- `test.yaml` - 测试环境
- `production.yaml` - 生产环境
主要配置项:
```yaml
server:
port: 5150
database:
uri: sqlite://book-manager_development.sqlite?mode=rwc
auto_migrate: true
auth:
jwt:
secret: your-secret-key
expiration: 604800 # 7 days
```
### 前端配置
Vite 配置在 `vite.config.js`:
```javascript
{
server: {
port: 5173,
proxy: {
'/api': {
target: 'http://localhost:5150',
changeOrigin: true
}
}
},
resolve: {
alias: {
'@': path.resolve(__dirname, './src')
}
}
}
```
## 🚀 部署
### 构建前端
```bash
npm run build
```
构建产物将输出到 `dist/` 目录。
### 构建后端
```bash
cd src-loco
cargo build --release
```
二进制文件位于 `target/release/book_manager-cli`
### 生产环境运行
```bash
# 后端
cd src-loco
cargo loco start --env production
# 前端 (使用静态文件服务器)
npm run preview
```
## 🤝 贡献
欢迎提交 Issue 和 Pull Request!
1. Fork 本仓库
2. 创建特性分支 (`git checkout -b feature/AmazingFeature`)
3. 提交更改 (`git commit -m 'Add some AmazingFeature'`)
4. 推送到分支 (`git push origin feature/AmazingFeature`)
5. 开启 Pull Request
## 📄 许可证
本项目采用 MIT 许可证 - 查看 [LICENSE](LICENSE) 文件了解详情。
## 🙏 致谢
- [Loco.rs](https://loco.rs/) - 优秀的 Rust Web 框架
- [Vue.js](https://vuejs.org/) - 渐进式 JavaScript 框架
- [Tailwind CSS](https://tailwindcss.com/) - 实用优先的 CSS 框架
- [SeaORM](https://www.sea-ql.org/SeaORM/) - Rust ORM 框架
---
**Made with ❤️ using Rust & Vue**