Web Applications

Tide and wind board for a weekend dive group

Built by Rafael Bautista

A single page that tells eleven divers whether Saturday is worth the drive, built because the group chat kept asking.

  • Builder email verified

    Verification

Type
Personal
Category
Web Applications
Published
Jul 25, 2026
Updated
Jul 25, 2026
Built withNext.jsTypeScriptTailwind CSSCloudflare
TopicsLifestyleSports

About this project

What I built & why

I dive most weekends with the same small group, and every Wednesday somebody would ask in the chat whether Saturday looked good. Answering it properly meant checking a tide table, a wind forecast and a swell site, then translating all three into 'yes, but go early'. I was doing that for everyone anyway, so I spent two weekends turning it into a page. It is genuinely just for us — there is no sign-up and the site names are hardcoded.

The problem

The problem is translation, not data. The forecast data is freely available and completely useless to a casual diver: nobody wants a wind vector, they want to know if the entry will be washing machine. The page pulls the numbers for our four regular sites and renders each as a plain verdict — good, marginal, or don't — with the two or three numbers that drove it underneath so anyone who does understand swell can disagree with me. It is for eleven people, one of whom is my sister and does not own a computer.

What I owned

All of it, including the scoring rules, which are the only interesting part and are entirely my opinion. I wrote the fetcher that caches forecasts, the scoring per site — each site has a different bad wind direction, which is the whole reason a generic app does not work — and the page itself. I also maintain it, which mostly means fixing it when an upstream forecast API changes its response shape, roughly twice a year.

Technical & product decisions

I made it a static page rebuilt on a schedule rather than a live app, because eleven people checking a forecast do not need real-time anything and a static page never wakes me up. Everything runs on a free tier and the whole thing costs me the domain. I hardcoded the four sites instead of building site management, which felt lazy and has been correct for three years — the day we add a fifth site, I will edit the file. The one thing I did put effort into is that the verdict always shows its reasoning, because a confident wrong answer would get someone into water they should not be in.

Hardest challenge

Getting the scoring to be useful rather than just conservative. My first version was tuned so cautiously that it said 'marginal' almost every weekend, which is the same as saying nothing. I ended up going back through two years of my own dive log, matching each entry against what the forecast had been, and fitting the thresholds to days I remembered as actually good or actually miserable. That turned it from a toy into something the group checks. It also taught me my memory of conditions is worse than my notes.

Result & impact

The Wednesday question stopped. More concretely, we have called off three trips based on it that we would previously have driven four hours to abandon, and the one time we overruled it we should not have. It gets maybe forty visits a week, all from the same eleven phones. My sister uses it, which was the actual test.

Who else worked on it

Two people in the group argued me out of my original wind thresholds and were right. One of them keeps a much better dive log than I do and lent me two years of it for the fitting.