
Overzicht
Het echte probleem
Hoe de score werkt
100 · size · (0.4 + 0.6·period) · (0.15 + 0.85·wind) · tide · rain · daylight
- Grootte is niet de ruwe modelhoogte. Elke deining wordt geschaald naar exposure — volle punten binnen het swell window van de spot, aflopend naar nul zodra de hoek 30° buiten dat venster komt, en nog verder gereduceerd wanneer de deining schuin aankomt. De blootgestelde deining wordt omgezet in een brekende hoogte (met de relatie van Komar en Gaudiano uit 1983), over de deiningen gecombineerd op energie, en vergeleken met de ideale golf van de spot.
- Wind wordt gewogen op hoe onshore hij is ten opzichte van de richting waarin het strand kijkt. Onshore wind telt bijna volledig tegen de score; offshore raakt ze nauwelijks.
- Getij vergelijkt de INOCAR-stand met de omliggende uren en matcht die met het voorkeursgetij van de spot. Het verzacht een score, maar maakt ze nooit nul.
- Een aparte stranddagscore is een gewogen meetkundig gemiddelde van kalm water, lichte wind, geen regen, zon en warmte, maal daglicht — want "een fijne dag aan het strand" en "goede surf" zijn verschillende vragen.
- INOCAR-waarschuwingen overrulen alles: een waarschuwing voor ruwe zee zet een plafond op de score, een zeer ruwe zee maakt ze zo goed als nul, en die uren worden nooit als "beste" voorgesteld.
De interface
Het stuk dat het echt maakt: het field log
Wat de data echt liet zien
- De getijden van INOCAR voor 2026 bestaan als open data — een uurlijkse CSV in lokale tijd — maar dekken negen stations, niet de vijfentwintig die je zou verwachten. La Libertad ligt het dichtst bij beide spots. Het eigen gemodelleerde getij van Open-Meteo klopt qua fase tot op ongeveer een uur, maar schiet door in amplitude, dus de officiële INOCAR-data wint.
- Het mariene modelraster is grof — zo'n negen kilometer — en landcellen geven niets terug, dus de app koppelt elke spot bewust aan een zinvolle oceancel in plaats van aan de louter dichtstbijzijnde.
- De modellen zijn het dicht bij de kust grondig oneens. In een vroege run varieerde de voorspelde dagpiek in Montañita van 37 tot 77, afhankelijk van de modelcombinatie. Het ene model noemde de primaire deining een windzee met korte periode, terwijl een ander voor exact hetzelfde uur een groundswell met lange periode rapporteerde. De wind 's middags liep over de modellen van 6 tot 20 km/u. Die onenigheid is precies wat het field log moet beslechten — en precies waarom een voorspelling met één cijfer voor deze kust een zelfverzekerde leugen zou zijn.
Gebruikte technologieën
- Framework: Next.js 16 (App Router, statische pagina's die elke 3 uur verversen) en React 19.
- Kaart: MapLibre GL met OpenFreeMap-tiles — geen API-sleutel, commercieel gebruik toegestaan.
- Grafieken: ECharts, tree-shaken, voor het meteogram, de tijdlijn en de swell rose.
- Data: mariene en weermodellen van Open-Meteo (alle combinaties opgehaald in één gebatchte call), INOCAR-getijden-CSV's, INOCAR-zeestaatwaarschuwingen.
- Styling: plain CSS custom properties met een licht en een donker thema.
- Testing: Vitest over de scoring en de getijdenparser.
- Tooling: een command-line-"spike" die de uurlijkse tabel voor elke spot en modelcombinatie print en elk uur naar CSV dumpt, zodat de modelvergelijking zonder browser kan draaien.
