← Carlos Mezquitaprojects / surfay / readme
03 Project case study

Surfay

Interpreting a marine forecast for the beaches of Galicia.

My work
Forecast application and model development
Project focus
Forecasts · Local context · Maps
01 / CONTEXT

The problem

The same offshore forecast can mean different conditions at different beaches. Surfay combines marine forecasts with local spot profiles to make conditions easier to explore along the Galician coast.

02 / BUILD

My contribution

I’m building the React and MapLibre interface and the supporting forecast application. A Cloudflare Worker serves the backend, a shared TypeScript engine scores forecasts, and D1 holds the spot catalogue and forecast snapshots.

The forecast interface

The map and forecast views let visitors explore conditions by spot. Local profiles give the forecast context rather than presenting offshore values as if they apply equally everywhere.

The scoring pipeline

The server retrieves marine weather from Open-Meteo and prepares a seven-day forecast. The model includes coastline exposure and reviewed bathymetric cases for refraction and shoaling.

Serving forecast data

Forecast snapshots are cached on the server. This lets visitors read the prepared dataset without every visit triggering a fresh request to the forecast provider.

  • React
  • MapLibre
  • TypeScript
  • Cloudflare Workers
  • D1
  • Open-Meteo
03 / SYSTEM

How the pieces connect

Forecast data passes through a server-side pipeline before reaching the browser. The scoring engine combines provider information with local context, while stored snapshots support the interface.

React + MapLibre connects to Worker API; Open-Meteo connects to Worker API; Spot profiles · D1 connects to TypeScript scoring; Worker API connects to TypeScript scoring; TypeScript scoring connects to Forecast snapshots; Forecast snapshots connects to React + MapLibre
A high-level component map. Select the diagram to inspect it at full size.
04 / ENGINEERING

Design notes

Local context instead of a universal score

Spot profiles and coastline exposure help interpret conditions locally. The result remains a model: it is useful to describe what is included and what still needs calibration, rather than treating a score as an observation.

Server-side work, shared forecast snapshots

The model runs behind the interface and the prepared results are cached. This separates forecast processing from browsing and avoids a new provider request for every visitor.

A model with visible boundaries

Reviewed bathymetric cases model refraction and shoaling. Other effects remain outside that table. Keeping those limits explicit makes it possible to explain what a forecast represents without overstating its precision.

05 / SCOPE

Where the project stands

Surfay combines a map-based interface, local spot profiles, and server-scored forecast snapshots. Its model includes coastline exposure and researched bathymetric effects.

Scope and limitations

Forecast scores are model outputs, not measured surf conditions. Calibration and modelling limits remain part of the work; this case study makes no numerical accuracy claim.