garminconnect-nextjs-starter
Next.js · React / 启动器 · 作者 DynamicsNinja
基于 Next.js 的 Garmin Connect 非官方启动器,登录后展示睡眠评分、时长与夜间 HRV 图表。
使用许可与条件
尚未完成使用条件评估,请先查看原仓库许可证。
查看许可来源
模板详细介绍
这是一个基于 Next.js 的启动器模板,用于登录 Garmin Connect 并查看睡眠与 HRV 数据。它依赖 garminconnect-js 库,通过一次 getSleepDaily 调用获取每晚的睡眠评分、睡眠时长、夜间 HRV 和静息心率,并用无依赖的 SVG 图表展示 7、30 或 90 天的趋势。登录支持多因素认证(MFA),密码仅发送至 Garmin 官方登录服务,应用只保存 OAuth 令牌。
模板提供三种运行模式:本地模式将令牌存于磁盘;公开模式将加密令牌存放在访客浏览器的 httpOnly cookie 中,服务器不保存任何数据;演示模式使用合成数据且禁用登录。公开模式下登录尝试有速率限制,并附有隐私说明页面。部署方面,仓库包含 nixpacks.toml,可配合 Dokploy、Coolify、Railway 等支持 Nixpacks 的平台使用,需设置 SESSION_SECRET 等环境变量,并建议只运行一个实例。
主要特点
- 登录 Garmin Connect 并展示睡眠评分、睡眠时长、夜间 HRV 与静息心率
- 提供 7、30、90 天睡眠评分、时长和 HRV 趋势图,支持悬停查看数值与表格视图
- 支持多因素认证(MFA),登录流程分两步完成
- 三种运行模式:本地、公开(令牌存于访客浏览器 cookie)、演示(合成数据)
- 图表为纯 SVG 实现,不引入额外依赖
- 公开模式下登录尝试按 IP 和全局进行速率限制
适用场景
- 快速搭建一个查看个人 Garmin 睡眠与 HRV 数据的仪表板
- 作为学习 Next.js Server Components 和 Server Actions 的示例项目
- 在公开部署中让访客使用自己的 Garmin 账号体验数据图表
- 使用演示模式生成合成数据用于截图或展示
适合人群
- 熟悉 Next.js 并希望集成 Garmin 数据的开发者
- 需要非官方 Garmin Connect 数据可视化原型的个人
- 想要参考令牌安全存储与 MFA 处理方式的开发者
使用前需要核对
- 需要 Node.js 20.9 或更高版本(Next.js 16)
- 复制 .env.example 为 .env.local 并设置 SESSION_SECRET
- 运行 npm install 后执行 npm run dev,默认监听 127.0.0.1:3000
- 公开部署时设置 GARMIN_PUBLIC=1,演示模式设置 GARMIN_DEMO=1
- 容器部署需使用 Nixpacks 并绑定 0.0.0.0:$PORT,建议只运行一个实例
本介绍由 AI 根据目录元数据和仓库 README 整理,实际功能以原仓库为准。
功能与适用范围
目录记录的用途为启动器,主要技术栈为Next.js、React。功能是否完整实现,需要在源码和演示中进一步确认。
- Next.js
- 启动器