WEB · CLIENT PROJECT · CASE STUDY

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.

Visit ondateresa.com → Build something like this
WHAT WE BUILT

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.

DATA & TECH

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.

STACK

What it runs on.

Next.js
Frontend
Supabase
Database + auth
PostGIS
Geospatial queries
MapLibre GL
Interactive map
Exa
Editorial enrichment
Open-Meteo / NOAA
Swell + tide data
LOCAL PLATFORMS

Building a directory,
almanac, or local guide?

We've done the full stack — map, database, editorial, surf physics and all. Tell us what you're building.

Start the conversation →