我构建了BreakFinder:个性化冲浪预报 + 完整的Garmin生态系统
Source: Dev.to

我构建了 BreakFinder:个性化冲浪预报 + 完整的 Garmin 集成
我尝试构建一些冲浪者真正需要的东西。今天我将分享技术历程、哪些方案有效,以及我会做哪些不同的选择。
问题
我是冲浪者。我会不断查看预报。但问题是:
6 英尺的海滩破浪 ≠ 6 英尺的礁石破浪
大多数预报应用会显示浪高和风向——很酷——但它们不会告诉你浪点是否符合你的技术水平,或者你是否正要划向危险的浪点。因此,我花了两个月时间开发了 BreakFinder 来解决这个问题。
Source: …
解决方案:三大支柱
个性化条件评分
与其提供通用预报,BreakFinder 会根据以下因素为你给出个性化的条件评分:
- 你偏好的浪高范围
- 你偏好的风向
- 你偏好的潮汐
- 你偏好的波周期
示例
- 预报:“6 英尺浪,15 节离岸风”
- 我的应用:“🟢 今天非常适合你”(因为我属于中级,喜欢 4‑6 英尺的浪)
- 对于初学者:“🔴 对你的水平来说太大了”
完整的 Garmin 集成(100+ 设备)
这是最困难的部分。我之所以集成 Garmin,是因为我使用 Garmin 手表并希望获得精准的冲浪记录。
包含内容
- 5 个 Connect IQ 应用(预报、冲浪追踪、冲浪滑板追踪、表盘、呼吸训练)
- 波浪计数(今天捕到的浪数)
- 课后数据同步至你的 BreakFinder 账户
为何如此困难
Garmin 的 Connect IQ SDK 功能强大,却文档匮乏。我必须:
- 支持 100+ 不同手表型号(每款功能各异)
- 处理离线功能(手表存储空间有限)
- 优化电池寿命(不能耗尽手表电量)
- 在设备不支持某些功能时提供回退方案
值得吗?也许吧。
技能水平点位匹配
数据库中收录了 1 500+ 冲浪点,并附有难度评级。当你规划行程时,你会看到:
- 初学者点位: 温和的海滩破浪
- 中级点位: 有一定风险的礁石
- 高级点位: 强劲破浪(如 Sunset、Pipe 区域)
技术栈
全栈
- Rails 7(API + 单体)
- Hotwire(Turbo + Stimulus)
- PostgreSQL 用于用户数据 + 点位
- Redis 用于缓存天气预报
- 事件驱动架构
外部服务
- Garmin Connect IQ SDK(C++)
- OpenMeteo 提供前 7 天的预报数据
- NOAA 提供 8–16 天的预报数据(值得在博客中记录痛点)
- Geocoder(Ruby gem)
- Leaflet 用于点位地图
DevOps
- Docker 用于开发环境
- Hetzner + Kamal(非常简单且便宜)
- GitHub Actions 用于 CI/CD
当前指标(已运行 2 个月)
- 5 000 下载 (Garmin IQ Store)
- 3.9★ 评分 (真实评论;我们支持 100+ 设备,因此会有一些小问题和早期版本的缺陷,例如缺少波浪计数)
- 1 000+ 已注册冲浪者
接下来
商业方面(2026 年 2 月上线)
我正在构建一个本地导游运营商的市场。
- 小型冲浪店、导游、团队可以自行上架
- 旅行冲浪者可以直接找到他们
- 公平定价(每家企业每月 €19‑€299,无算法陷阱)
- 没有像预订平台那样的 30 % 佣金
收入模式:单个冲浪者可能每月支付 €5;本地企业每月可支付 €50‑200 以获取客户。
为其他独立开发者
- 挑选你深刻了解的细分领域(我是一名冲浪爱好者)
- 早期专注于一个指标(我的:Garmin 支持)
- 写技术旅程(而不仅仅是营销视角)
链接
有问题吗?
我会阅读每条评论。请向我询问以下内容:
- Garmin API
- Rails 架构
- 预测算法
- 我会做的不同之处
- 作为独立开发者的构建
来聊聊吧! 🏄♂️