A full digital rebuild for a construction and renovation company in Liepāja
From an outdated page-builder setup to a custom, hand-coded WordPress theme — no Divi, no Elementor, no page-builder overhead.
The contact form showed "message sent," but the messages never actually arrived anywhere — and the site had no EN or RU version.
What was built
Foundation
A custom WordPress theme, hand-coded — PHP, CSS, JS. No Divi, no Elementor, no page-builder overhead on every page load.
Content System
Two real content types — "Work" and articles — both editable directly from the WP admin, with no code editing.
Gallery
For every project — a full-screen cover photo plus a swipeable photo strip with a zooming lightbox, built from scratch.
Languages
LV / EN / RU via Polylang, with a shared header/footer system — a single change updates the text across the entire site.
Result
A real contact form where messages used to vanish without a trace. Three languages where there used to be just one. A work portfolio the client now updates themselves, without writing a single line of code.
Growth in inquiries since launch
A real, server-side contact form — invisible spam protection, a direct email delivery channel.
A content system that grows with the client
Two real content types — "Work" (portfolio) and articles — both editable directly from the WP admin. The client publishes a new finished project the same way they'd publish a regular post, with no code editing.
What wasn't trivial
Most of the work is visible. This part isn't: problems that don't show up in a screenshot, but which, left unresolved, would quietly break the site.
Server configuration
The new homepage was correctly built and set in the WordPress admin — but the browser kept showing the old version. The cause: a forgotten nginx config fragment left over from an earlier session was serving the old static file, bypassing PHP entirely.
Multilingual platform
The EN and RU versions periodically "forgot" their homepage and quietly fell back to a generic template. The cause: Polylang caches its language list — a newly translated page wasn't recognized until that cache was manually cleared.
QR code for reviews
Any QR generator can "look" correct without actually scanning on a single phone. We chose a proven open-source library, then verified it ourselves: generated image → decoded with a scanner library → compared to the original URL byte for byte.
Structured data
Each of the 27 new pages could have described the company separately — Google would then see them as 27 unrelated sources. We hand-wrote JSON-LD where every page references the same company "entity" via @id, instead of repeating its data.
The rest of the build specification
Checking the old site's sitemap.xml revealed 26 pages indexed by Google that needed an equivalent in the new version — there are now 27.
27 new pages
Fills the old site's indexed URL gap — each with unique content, FAQ schema, and breadcrumb structured data.
A real contact form
Server-side, with invisible spam protection (Cloudflare Turnstile) and a direct email delivery channel.
QR code for clients
A private link plus a generated QR code for leaving reviews. The owner chooses what to publish — approved reviews appear automatically.
Structured data & redirects
Hand-written JSON-LD, real keyword research for the Liepāja market, and clean 301 redirects for every old URL.
What it's built with
WordPress — custom theme
PHP and vanilla JS, with no page builder or unnecessary plugins.
Polylang
A multilingual system with shared header/footer switching — LV / EN / RU.
Cloudflare Turnstile
Invisible spam protection for the contact form, with no annoying captcha tests.
Hand-written JSON-LD
Organization, FAQPage, BreadcrumbList structured data — one consistent entity across the site.
Other Transformations
| Project | Industry | Link |
|---|
Let's get to work. Let's start talking.
Tips and news about web development. Sign up for updates.
Submission received. Thank you!monol.lv — live since the rebuild was completed. Westtro is a full-cycle website development studio — from idea to launch and support after that.
