Emiliopg91/garmin-tracker-rs

GitHub: Emiliopg91/garmin-tracker-rs

基于 Tauri 的跨平台桌面应用,通过 USB 同步 Garmin 手表的 .FIT 文件并在本地 SQLite 中追踪力量训练与身体测量数据,无需云端账户。

Stars: 7 | Forks: 2

# Garmin Tracker [![Ask DeepWiki](https://deepwiki.com/badge.svg)](https://deepwiki.com/Emiliopg91/garmin-tracker-rs) **同步您的 Garmin 设备并追踪您的力量训练——尽在这一款桌面应用中。** Garmin Tracker 是一款基于 [Tauri](https://tauri.app/) 构建的跨平台桌面应用,结合了 Rust 后端与 React + TypeScript 前端。它通过 USB (MTP) 连接到 Garmin 手表,导入您的活动 `.FIT` 文件,并将您的锻炼回合、训练动作和身体测量数据存储在本地 SQLite 数据库中——无需云端账户。 ## 截图 | ![Screenshot 1](https://static.pigsec.cn/wp-content/uploads/repos/cas/a0/a0234e9bb2773bf9e8fe44eb99cb111383424c689c2b3e3509677b7925090f7d.png) | ![Screenshot 2](https://static.pigsec.cn/wp-content/uploads/repos/cas/ef/efdcbc8ce9eebb24cd4c763551195449c9ec4c642e3f64e2d6ff3e15f89f9e79.png) | | :----------------------------------------------------: | :----------------------------------------------------: | | ![Screenshot 3](https://static.pigsec.cn/wp-content/uploads/repos/cas/72/7214b16ebaa4bc6ee41eea439eae68739aaf23c86da0a135966cf4e97d28c165.png) | ![Screenshot 4](https://static.pigsec.cn/wp-content/uploads/repos/cas/de/dee032bf167cf07d4e7dd0b2b3a50cb20152655d0ffb852ff64d26e9c62c41ca.png) | | ![Screenshot 5](https://static.pigsec.cn/wp-content/uploads/repos/cas/fc/fc3c87ffd151b610572ac6c75e356e203a0a6ecb0f1e607e31538c7b51e57a72.png) | ## 功能 - **通过 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, 健身追踪, 可视化界面, 安全插件, 桌面应用, 网络流量审计, 通知系统