BikeControl (SwiftControl)
Use Zwift Click, Zwift Play, Shimano Di2, or any Bluetooth controller with MyWhoosh, Rouvy, Zwift, and more. Free to try on iOS, Android, Windows, and macOS.
Good surf windows for Pleasure Point, Santa Cruz, as a calendar feed.
Translation pending
Sports & fitnessPythonGitHub @mintzuhahaOnlineOwner unconfirmed
Have you tried it? One tap is enough. No sign-in needed.
No updates detected yet. GitHub releases will appear here.
Owners of public repositories under a personal GitHub account can sign in to verify ownership and manage the introduction themselves. No administrator approval is needed.
Sign in, generate a verification file, and commit it to this repository’s default branch within 30 minutes. Files on other branches or forks do not count. Then check the file below to manage the project without administrator approval. Keep the file to retain your access.
If needed, you will go to sign-in. After signing in, return here and press your chosen verification button again.
Run /nomorevibe verify in your project folder to verify ownership and manage the introduction yourself.
Verify in one minuteAsk about other verification options
The maker's introduction consists of the line above. Read the repository README for more details. Repository README ↗
Loading the full README.
Read the full README ↗Live: https://surf-windows.vercel.app · Subscribe: https://surf-windows.vercel.app/feed.ics
Built in one afternoon with Claude Code, with 56 offline tests. The spec is in CLAUDE.md, and every decision is logged in DECISIONS.md.
Good surf is a rare alignment: waves from distant storms have to arrive alongside the right tide, wind, daylight and a few rain-free days. Surf Windows finds the hours at Pleasure Point, Santa Cruz, when they all line up, and puts them on your calendar as a live feed that updates with the forecast, so you can plan meetings and dinners around good surf.
Good surf needs five things to line up at once, and each changes on its own clock:
| Condition | Why it matters | Changes over |
|---|---|---|
| Waves | Energy from storms far out at sea. Too small is flat, too big is dangerous. | Days |
| Tide | Too high and the waves don't break well at this spot. | Twice a day |
| Wind | Calm wind keeps waves smooth; wind blowing onshore makes them choppy. | Hours |
| Rain | Runoff carries bacteria into the water; health officials advise waiting 72 hours. | Days |
| Daylight | You need to see. | Every day |
Forecast apps show the conditions, but I still had to check every day and work out when I was free. Surf Windows turns the forecast into calendar time.
Open-Meteo (swells, wind, rain) ─┐
NOAA (tides) ────────────────────┼─> score hours -> merge windows -> page (/) + feed (/feed.ics)
astral (sunrise, sunset) ────────┘
Set in config.yaml. The Pleasure Point settings:
spot:
high_tide_ft: 4.2 # tide reaching this is too high
ideal_tide_ft: 3.7 # staying below this is ideal
preferences:
size: {knee: skip, waist: ok, chest: fav, head: fav, overhead: ok, way_over: skip}
warn_sizes: [overhead] # 5–7 ft is okay, with a big-wave warning
tide: {low: ok, mid: ok, high: skip}
wind: {glassy: fav, light: ok, windy: skip}
rain: {skip_after_hours: 72, threshold_in: 0.1}
daylight: {before_sunrise_min: 60, after_sunset_min: 60}
Sizes use Surfline-style feet: knee 1–2, waist 2–3, chest 3–4 (Surfline's "waist to shoulder"), head 4–6, overhead 5–7, and way over 6–8 and up, which is a no-go.
pip install -r requirements.txt
pytest # offline, against tests/fixtures/
python scripts/record_fixtures.py # refresh the fixtures from the live APIs
vercel dev
Weather data by Open-Meteo.com. Tide predictions from NOAA CO-OPS. Built with Claude Code.