I Built BreakFinder: Personalized Surf Forecasts + Full Garmin Ecosystem
Source: Dev.to

I Built BreakFinder: Personalized Surf Forecasts + Full Garmin Integration
I try to build something surfers actually needed. Today I’m sharing the technical journey, what worked, and what I’d do differently.
The Problem
I’m a surfer. I check forecasts constantly. But here’s the thing:
A 6 ft beach break ≠ a 6 ft reef break
Most forecast apps show you swell size and wind direction—cool—but they don’t tell you if the break matches your skill level or if you’re about to paddle into something dangerous. So I spent two months building BreakFinder to solve that.
The Solution: Three Pillars
Personalized Condition Scores
Instead of generic forecasts, BreakFinder gives you a personalized condition score based on:
- Your preferred wave height range
- Your preferred wind direction
- Your preferred tide
- Your preferred wave period
Example
- Forecast: “6 ft swell, 15 kt offshore wind”
- My app: “🟢 Perfect for you today” (because I’m intermediate and like 4‑6 ft)
- For a beginner: “🔴 Too big for your level”
Full Garmin Integration (100+ Devices)
This was the hardest part. I integrated with Garmin because I use a Garmin watch and wanted accurate session tracking.
What’s included
- 5 Connect IQ apps (Forecast, Session Tracker, Surf Skate Tracker, Watch Face, Breath Training)
- Wave counting (how many waves you caught today)
- Post‑session data sync to your account at BreakFinder
Why it was hard
Garmin’s Connect IQ SDK is powerful but poorly documented. I had to:
- Support 100+ different watch models (each with different capabilities)
- Handle offline functionality (watches have limited storage)
- Optimize for battery life (can’t drain your watch)
- Build fallbacks when devices don’t support certain features
Worth it? Maybe.
Skill‑Level Spot Matching
The database of 1 500+ spots includes difficulty ratings. When you’re trip‑planning, you see:
- Beginner spots: Mellow beach breaks
- Intermediate: Reefs with some risk
- Advanced: Heavy breaks (Sunset, Pipe territory)
The Tech Stack
Fullstack
- Rails 7 (API + Monolith)
- Hotwire (Turbo + Stimulus)
- PostgreSQL for user data + spots
- Redis for caching forecasts
- Event‑Driven Architecture
External Services
- Garmin Connect IQ SDK (C++)
- OpenMeteo for the first 7‑day forecast data
- NOAA for 8–16‑day forecast data (own blog worth documenting the pain)
- Geocoder (Ruby gem)
- Leaflet for spot maps
DevOps
- Docker for development environment
- Hetzner + Kamal (so easy and cheap)
- GitHub Actions for CI/CD
Current Metrics (2 Months In)
- 5 000 downloads (Garmin IQ Store)
- 3.9★ rating (honest reviews; we support 100+ devices, so some quirks and early‑version issues like missing wave counting)
- 1 000+ registered surfers
What’s Next
Business Side (Launching Feb 2026)
I’m building a marketplace for local guide operators.
- Small surf shops, guides, crews can list themselves
- Traveling surfers can find them directly
- Fair pricing (€19‑€299 /month per business, NO algorithm trap)
- No 30 % commission like booking platforms
Revenue model: a solo surfer might pay €5 /month; a local business could pay €50‑200 /month to reach customers.
For Other Solo Devs
- Pick a niche you understand deeply (I am a surf addict)
- Focus on one metric early (mine: Garmin support)
- Write about the technical journey (not just the marketing angle)
Links
Questions?
I read every comment. Ask me about:
- Garmin APIs
- Rails architecture
- Forecasting algorithms
- What I’d do differently
- Building as a solo dev
Let’s talk! 🏄♂️