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 6ft beach break ≠ a 6ft 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 2 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: "6ft swell, 15kt offshore wind"
- My app: "🟢 Perfect for you today" (because I'm intermediate + like 4-6ft)
- But 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 1500+ spots includes difficulty ratings. So 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:
- Garmin Connect IQ SDK (C++)
- OpenMeteo for first 7 days forecast data
- NOAA for 8–16 days forecast data (own blog worth documenting the pain)
- Geocoder (Ruby Gem)
- Leaflet for spot maps
DevOps:
- Docker for dev environment
- Hetzner + Kamal (loving it! 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 = some quirks and early version had some major issues like no wave counting at all)
- 1000+ registered surfers
What's Next
Business Side (Launching Feb 2026)
Here's where it gets interesting. I'm building a marketplace for local
guide operators.
The idea:
- 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
This is where the real revenue lives. A solo surfer might pay €5/month.
A local business? They'll pay €50-200/month to reach customers.
For Other Solo Devs
If you're building something:
-
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! 🏄♂️