← All projects Build log

web_ixa

A public site in ten languages, on a WordPress theme written from scratch, that asks the PMS what is free and hands it back the enquiries.

Status In production
Started August 2026
Stack WordPress · PHP · Docker

What it is

Overview

The public face of the same operation pms_ixa runs behind: property cards, availability, and an enquiry form that lands in the PMS inbox rather than in somebody's mail folder.

It is a block theme written by hand, no page builder and no npm — edited in place, reloaded in the browser, seeded from a repeatable script. The reason is maintenance: the people who update the content are not developers, and the thing they update should not be able to break the layout.

How it evolved

Arc

It began as a rescue. The previous site was a React SPA that went blank when the API behind it disappeared — a single point of failure nobody had priced in. The replacement was chosen for the opposite property: content that survives its author, and no build step between an edit and the page.

Then it grew languages. One, then two, then ten — including a Cyrillic script and a right-to-left one, which is where a layout stops being decorative and starts being tested. The theme's own interface is translated too, not just the pages.

Then it connected. The site now reads occupied dates from the PMS and posts enquiries into it, which closes the loop: a stay booked anywhere shows as taken here, and an enquiry raised here is already in the operator's queue.

One deliberate small thing I am fond of: a single line left on the dead SPA's old route, so anyone still holding that link gets an explanation instead of a white page.

Screens

Interface
Home — screenshot pending
Hero, search, and the property cards with their equipment icons.
Language switcher — screenshot pending
Ten languages, including RTL, with the theme's own interface translated.

Changelog

Newest first

September 2026

2026-09

PMS integration ships to production Feature

The theme now carries the integration itself, so the live site reads availability and files enquiries without a plugin in between.

August 2026

2026-08

The site talks to the PMS Feature

Enquiries go into the PMS inbox and occupied dates come back out, first proven against a staging instance running against real development data.

2026-08

Ten languages Feature

Polylang with a switcher, growing from two to ten: Catalan, Spanish, English, German, Polish, Dutch and the rest, including a Cyrillic script and a right-to-left layout. Pages, property cards and the theme's own interface strings are all translated — and the RTL bugs that only appear when the layout mirrors were fixed rather than hidden.

2026-08

Visual identity Feature

A palette of its own, a hero that carries a real photograph with a veil that actually covers, the logo and favicon served by the theme, and CC-licensed photography with its attribution visible rather than buried.

2026-08

Mobile and layout fixes Feature

The header fits on a phone, the property cards stopped redirecting between languages, and the hero veil no longer covers the search it sits behind.

2026-08

Rescue and rebuild Start

Salvaged what could be salvaged from the old site, then built a block theme from scratch and loaded the content back in. A line was left on the dead SPA's route so anyone holding an old link sees an explanation, not a blank page.