Emiliopg91/garmin-tracker-rs
GitHub: Emiliopg91/garmin-tracker-rs
基于 Tauri 的跨平台桌面应用,通过 USB 同步 Garmin 手表的 .FIT 文件并在本地 SQLite 中追踪力量训练与身体测量数据,无需云端账户。
Stars: 7 | Forks: 2
# Garmin Tracker
[](https://deepwiki.com/Emiliopg91/garmin-tracker-rs)
**同步您的 Garmin 设备并追踪您的力量训练——尽在这一款桌面应用中。**
Garmin Tracker 是一款基于 [Tauri](https://tauri.app/) 构建的跨平台桌面应用,结合了 Rust 后端与 React + TypeScript 前端。它通过 USB (MTP) 连接到 Garmin 手表,导入您的活动 `.FIT` 文件,并将您的锻炼回合、训练动作和身体测量数据存储在本地 SQLite 数据库中——无需云端账户。
## 截图
|  |  |
| :----------------------------------------------------: | :----------------------------------------------------: |
|  |  |
|  |
## 功能
- **通过 USB (MTP) 同步设备** — 检测已连接的 Garmin 设备,并直接从手表存储中下载新的活动记录。
- **手动导入** — 如果您不想连接设备,可以从磁盘导入活动文件。
- **`.FIT` 文件解析** — 将 Garmin `.FIT` 活动文件解析为结构化的锻炼回合和系列数据。
- **力量训练追踪** — 查看/编辑已记录的锻炼回合及其系列(组数、次数、重量等)。
- **身体测量数据** — 记录并长期追踪用户的身体测量指标。
- **本地数据库** — 所有数据均持久化存储在本地 SQLite 数据库中(schema 通过版本化的 DDL 迁移进行管理)。
- **桌面通知** — 针对后台事件提供原生通知(例如:设备同步已完成)。
- **单实例运行** — 防止应用同时运行多个副本,从而避免数据库损坏。
## 技术栈
| 层级 | 技术 |
| --------- | -------------------------------------------- |
| 外壳 | [Tauri 2](https://tauri.app/) |
| 后端 | Rust |
| 前端 | React 19 + TypeScript, Vite, React Bootstrap |
| 数据库 | SQLite |
| 打包 | Arch Linux `PKGBUILD` |
## 安装说明
### Arch Linux(通过 `AUR helper`/`PKGBUILD`)
安装 AUR `garmin-tracker-rs` 软件包,以获取应用程序的最新稳定版本及所有外部依赖项。
### 从源码构建
前提条件:[Rust](https://www.rust-lang.org/tools/install)、[pnpm](https://pnpm.io/),以及适用于您平台的 [Tauri 前置条件](https://tauri.app/start/prerequisites/)。
```
git clone https://github.com/Emiliopg91/garmin-tracker-rs.git
cd garmin-tracker-rs
pnpm install
make build # or: pnpm tauri build
```
## 开发
```
pnpm install
make run # runs the app in dev mode
```
其他实用命令(参见 `Makefile`):
| 命令 | 描述 |
| -------------- | ------------------------------------------------------- |
| `make run` | 以开发模式启动应用 |
| `make build` | 构建发布包 |
| `make lint` | 对前端 (ESLint) 和后端 (`cargo clippy`) 执行 lint 检查 |
| `make clean` | 移除 `node_modules`、`dist` 以及 Rust 构建产物 |
| `make update` | 更新项目依赖 |
| `make release` | 发布一个新版本 |
| `make publish` | 发布一个 release |
## 项目结构
```
resources/
ddl/ Versioned SQL schema migrations
scripts/ Python helper scripts (release/versioning/dependency management)
PKGBUILD, *.rules Linux packaging assets
src/ React + TypeScript frontend
src-tauri/ Rust backend (Tauri application)
src/garmin/
database/ SQLite access layer (DAOs for devices, exercises, series, sessions, users)
mtp/ Garmin device discovery & activity download over MTP/USB
parser/ .FIT file parsing
src/ui/ Tauri commands exposed to the frontend (app, devices, exercises,
notifications, sessions, user, workouts)
```
## 许可证
依据项目 `PKGBUILD` 中声明的 GPL-2.0 许可证分发。
标签:Garmin, React, Rust, SQLite, Syscalls, Tauri, TypeScript, 健身追踪, 可视化界面, 安全插件, 桌面应用, 网络流量审计, 通知系统