Back to portfolio
  • Client work
  • Full-stack development (sole developer)
  • Mar - Jun 2025

Local Buddy Travel

Bilingual site for a Sicilian tourism business, with content read from Google Sheets and bookings sent via WhatsApp.

Local Buddy Travel

The problem

A tourism business in Sicily offering excursions, car rental and airport transfers needed a site for both foreign and Italian tourists. The client wanted to update tours and cars on their own, and to receive bookings without running a backend.

What I built

I was the only developer. The site is bilingual (Italian and English) and includes:

  • A home page made of sections: hero, about, experiences, car rental, airport transfers and a call to action.

  • An experiences grid with filters, and detail pages for experiences and cars.

  • A booking form that builds a prefilled message and opens WhatsApp, plus a contact modal with the same logic.

Interesting decisions

  • Google Sheets as a CMS. Tours, cars, images and translations live in one spreadsheet. The server reads it with a read-only service account and turns it into typed objects, so the client updates the site by editing the sheet.

  • In-memory cache. Each range read is cached for five minutes to stay within the Google API quotas.

  • Translations from the sheet. A locale route and a React context handle the language.

  • WhatsApp instead of a booking backend. The message is generated on the client. It is a pragmatic choice for an audience already used to WhatsApp.

What I would do differently today

Using Google Sheets as the CMS turned out to be awkward and unnecessary. Today I would use a real CMS, such as Contentful or Payload.

Need something similar?

Tell me about your project: I usually reply within one working day.

Get in touch
Next projectAGM Costruzioni