← Back to work

Product Design · Full-Stack Development · SEO Strategy

Thermaikos Guide

A complete travel platform for the Thermaikos Riviera — built from scratch, alone, end to end.

Role

Product Owner · UI/UX · Full-Stack Dev

Stack

WordPress → Cloudflare Pages · PHP · JS

Languages

9 (GR, EN, DE, IT, FR, RU, BG, SR, TR)

Thermaikos Guide — Coastal Riviera

Overview

A region of 10 coastal villages with no unified digital presence.

The Thermaikos municipality sits just 20 minutes from Thessaloniki Airport: 50+ kilometres of coastline, dozens of beaches, hundreds of restaurants, and thousands of businesses — none of it properly indexed or discoverable online. Tourists had no single platform to explore the area, and local businesses had minimal digital presence.

I decided to build it.

The Challenge

Building a scalable, multilingual directory from zero data.

The core problem wasn't design — it was data. A travel guide is only as good as its listings, and starting from a blank database for a municipality of 1,259+ businesses meant I needed a data acquisition strategy before any interface work could begin.

On top of that: the site needed to serve tourists from across Europe (9 languages), perform well on slow mobile connections on the beach, rank in local search results, and handle all of this without a backend team — just me.

1,259+
Businesses in directory
9
Languages
10
Coastal villages
50km+
Coastline covered

Data Strategy

Custom scraper to seed the business directory.

I built a custom PHP scraper that systematically collected business listings for the Thermaikos area — names, categories, locations, contact details — and imported them directly into WordPress as custom post types. The scraper saved a unique place_id per business to prevent duplicates and enable future diff runs to detect new or closed businesses.

This gave the directory an immediate critical mass: 1,259 real businesses on day one, making the platform immediately useful rather than launching half-empty.

Architecture

WordPress as CMS, Cloudflare Pages for delivery.

WordPress drives content management — the editorial team can add attractions, write village guides, and manage business listings through a familiar admin UI. But the public-facing site is 100% static: a custom PHP build script exports every page to flat HTML files, which are deployed to Cloudflare Pages.

The result: no PHP running in production, no database exposed to the internet, Cloudflare's global CDN serving every request, and sub-second load times anywhere in the world.

Dynamic functionality (contact forms, map queries) runs through Cloudflare Workers — serverless edge functions that handle API calls without an origin server.

Design

Mediterranean light, coastal photography, clean typography.

The visual direction was dictated by the place: warm blues, sandy whites, photography-forward layouts. The design needed to feel inviting to a German tourist planning a beach holiday just as much as a local Greek looking for a restaurant. Clean, international, but unmistakably Greek coastal.

Navigation and information architecture were designed around the tourist's mental model: discover by village, by category (beaches, restaurants, activities), or browse an interactive map. Mobile-first throughout — most visits come from phones on or near the beach.

SEO Strategy

Structured data, hreflang, and a long-tail content approach.

With 9 languages and 10 villages, the SEO opportunity was significant. Each village and each category gets its own indexed page with unique content, structured data (LocalBusiness schema), and correct hreflang annotations for all language variants.

The business directory provides deep linking opportunities — 1,259+ individual business pages, each with a unique URL, description, and structured data, creating a natural long-tail keyword footprint across every major European language.

Outcome

A live, indexing platform built and deployed solo.

Thermaikos Guide launched as a functioning travel platform — correct hreflang across 9 languages, full business directory seeded and live, Cloudflare Pages deployment pipeline automated, and contact form working via Cloudflare Workers and a custom SMTP relay (thess-mailer) hosted on Cloudways.

The scraper runs on a scheduled basis to detect new and closed businesses, keeping the directory current without manual data entry.