Work2026

Wayta Perú

A bilingual travel operator site where the marketing page, the blog, and the studio the client edits in are one deployment.

Role
Design and build, end to end
Year
2026
  • Next.js 15
  • React 19
  • Sanity
  • next-intl
  • Tailwind v4
The Wayta Perú home page, a full width valley photograph under a bilingual navigation bar.

Wayta Perú runs guided trips through the Sacred Valley. They needed a site that reads as a serious operator in two languages, and they needed to change the copy themselves without opening a pull request or waiting on me for a typo.

The problem underneath the brief

Small operators usually end up with two half solutions. Either the site is a static build that looks right and cannot be edited, or it is a page builder that can be edited and never quite looks right. Both fail in the same place: the second language. Translation gets bolted on as a duplicate page tree, the two copies drift apart within a season, and the English side quietly becomes the stale one.

2

Locales

Spanish is the default, English is a first class peer rather than a translation layer.

1

Deployment

Marketing pages, blog, and the editing studio all ship together.

0

Duplicated page trees

One route definition, two locales resolved from it.

How it is built

Next.js 15 App Router, with next-intl owning the locale segment. The routes are declared once and both locales resolve through the same tree, so a section added in Spanish exists in English the moment its copy lands. Sanity holds every editable string and the blog, and the studio is embedded at /studio in the same deployment, which means the client has one URL to remember and one login to lose.

The Wayta Perú home page at desktop width, showing the itinerary section.
The home page is one anchored document rather than a set of thin sub pages, which suits how people actually read an operator site.

The interesting constraint was the language switch. Moving between locales has to keep the reader where they were. Someone halfway down the itineraries section who taps English and lands back at the top of the home page has been punished for wanting to read it in their own language.

Playable

Locale switch that keeps your place

Ported from Wayta Perú

Current route: /es#experiencias

Experiencias

Rutas guiadas por el Valle Sagrado con salidas en grupos reducidos y guías locales que viven en la zona.

The switch is labelled in the language it will take you to, not the one you are already reading. That single rule removes most of the confusion around language toggles.

The rest of the site

A scroll through the Wayta Perú home page from the hero down to the contact section.
A scroll capture rather than an embedded frame, so this keeps working exactly as it is even after the live site changes.

What I would keep

The one deployment decision paid for itself immediately. The client edits in the same place they visit, there is no separate CMS host to renew, and preview builds show real content because there is only ever one source of it.