# Flash Send 项目文档

欢迎阅读 Flash Send 项目文档！本文档将帮助你快速了解和熟悉这个项目。

## 项目简介

**Flash Send** 是一款基于 Tauri 2 + Vue 3 + Rust 构建的跨平台局域网文件传输与聊天应用。它允许同一局域网内的设备进行：

- 🔍 **设备发现** - 自动发现局域网内的其他 Flash Send 设备
- 💬 **即时聊天** - 与其他设备进行实时文字聊天
- 📁 **文件传输** - 安全快速地传输文件
- 🔒 **端到端加密** - 使用 TLS 加密保护数据传输安全

## 技术栈

| 层级 | 技术 |
|------|------|
| 前端框架 | Vue 3 + TypeScript |
| 状态管理 | Pinia |
| UI 框架 | TailwindCSS |
| 图标库 | Lucide Vue |
| 路由 | Vue Router |
| 桌面框架 | Tauri 2 |
| 后端语言 | Rust |
| 异步运行时 | Tokio |
| HTTP 服务 | Axum |
| WebSocket | tokio-tungstenite |
| 数据库 | SQLite (rusqlite) |
| TLS 加密 | rustls + rcgen |

## 文档目录

| 文档 | 说明 |
|------|------|
| [02-架构设计](./02-架构设计.md) | 整体架构、模块划分、数据流 |
| [03-后端结构](./03-后端结构.md) | Rust 后端代码结构和模块说明 |
| [04-前端结构](./04-前端结构.md) | Vue 前端代码结构和组件说明 |
| [05-API文档](./05-API文档.md) | Tauri 命令接口详细说明 |
| [06-通信协议](./06-通信协议.md) | 设备发现、WebSocket、HTTP 协议 |
| [07-数据库设计](./07-数据库设计.md) | 数据表结构和操作 |
| [08-开发指南](./08-开发指南.md) | 环境搭建、开发流程、构建部署 |

## 快速开始

### 环境要求

- Node.js >= 18
- Rust >= 1.70
- pnpm / npm / yarn

### 安装依赖

```bash
# 安装前端依赖
npm install

# Rust 依赖会在构建时自动安装
```

### 开发模式

```bash
npm run tauri dev
```

### 构建生产版本

```bash
npm run tauri build
```

## 核心功能

### 1. 设备发现
通过 UDP 广播（端口 53317）自动发现局域网内的设备，无需手动配置。

### 2. 即时聊天
使用 WebSocket（端口 53318）进行实时双向通信，支持文本消息。

### 3. 文件传输
通过 HTTPS（端口 53319）进行加密文件传输，支持：
- 大文件分块传输
- 实时进度显示
- 取消传输
- 传输历史记录

### 4. 安全特性
- 自签名 TLS 证书
- 端到端加密传输
- 本地数据持久化

## 端口说明

| 端口 | 协议 | 用途 |
|------|------|------|
| 53317 | UDP | 设备发现广播 |
| 53318 | WebSocket | 即时聊天 |
| 53319 | HTTPS | 文件传输 |

## 许可证

MIT License
