Case studies — WEB · CLIENT PROJECT

650+ listings. Real surf physics. A full editorial almanac for Santa Teresa.

Directory, editorial, and live surf conditions for Costa Rica's most sought-after surf town. MapLibre + Supabase + Exa.

Santa Teresa gets one of the best and most consistent swells in Central America. It also gets no shortage of tourists who don't know where to eat, stay, or paddle out. Onda is the almanac that fixes that, built from scratch with a curated listings database, a physics-informed surf report, and a full editorial layer.

Directory. Surf. Editorial. One platform.

Local Directory 650+ Curated Listings

Restaurants, surf schools, yoga studios, accommodations, tours, and more. Every listing has photos, hours, GPS coordinates, and editorial context, not scraped, curated. Categorized, filterable, searchable.

Surf Conditions Physics-Based Surf Report

Not a weather embed. Live swell data pulled from buoy and forecast APIs, processed into a real-time dashboard, wave height, period, wind direction, tide state, and a quality score that factors all of them. Built for surfers, not tourists.

Interactive Map MapLibre GL + PostGIS

Custom-styled MapLibre GL map. Browse all 650+ listings spatially, filter by category, search by radius. Coordinates stored as PostGIS geometry in Supabase, proximity queries run at the database layer, not in the browser.

Editorial Layer Area Guides, Season Advice, Local Picks

Full editorial section written as part of the project. Area guides for every neighborhood, month-by-month seasonal travel advice, locals-only recommendations. Enriched with Exa search for contextual discovery. Content strategy and copy produced by ZipLyne.

How the data layer works.

DATABASE SUPABASE + POSTGIS

Listings stored with geography(Point, 4326) columns. Radius search uses ST_DWithin , fast spatial queries without pulling coordinates to the frontend. RLS policies isolate admin write access.

MAP MAPLIBRE GL JS

Custom map style built to match the Onda design language. Cluster markers at low zoom, individual pins at street level. Category filters update the map source in real time without re-fetching.

EDITORIAL EXA SEARCH ENRICHMENT

Exa powers contextual content discovery across the editorial section, related guides, linked experiences, and recommended reads surface alongside curated content to keep depth without adding editorial overhead.

What it runs on.

Frontend Next.js

Database + auth Supabase

Geospatial queries PostGIS

Interactive map MapLibre GL

Editorial enrichment Exa

Swell + tide data Open-Meteo / NOAA

On the bench.

  • Next.js
  • Supabase
  • PostGIS
  • MapLibre GL
  • Exa
  • Open-Meteo / NOAA