Irish Transfer
Next.js and Sanity CMS website with 30 dynamic landing pages, live pricing rail, context-aware booking widget, multilingual support, and 14 SEO blog posts. Delivered and deployed; client-side DNS cutover pending.

// delivery facts
30
Dynamic landing pages
CMS-driven, one route document = one SEO page
14
SEO blog posts
Schema.org Article markup, FAQ sections, internal linking
Live at request time
Pricing
No redeploy needed for price changes
Deployed - DNS pending
Status
Delivered and on Vercel; apex DNS cutover pending client side
The challenge
A transport operator needed a modern website capable of presenting dozens of distinct service routes as individual SEO-optimised landing pages, with live pricing surfaced at request time and a booking widget that understood which route the visitor was looking at.
- 1
Legacy WordPress site could not scale to 30+ route-specific landing pages without duplicating templates and managing each manually
- 2
Pricing changed frequently; embedding it in static pages meant every price update required a developer deploy
- 3
The booking widget on the legacy site was context-blind - it did not pre-fill the origin/destination from the landing page the user was on
- 4
No multilingual support despite a customer base that included non-English speakers
How it was built
Next.js + Sanity CMS with a route-driven static generation strategy, a live-pricing API rail, a context-aware booking widget that reads route context from the page, and a multilingual content model.
Sanity CMS powers all 30 landing pages from a single route document schema; adding a new route in the CMS triggers a new fully-optimised page with no code change
Live-pricing rail: the booking widget calls a pricing endpoint at request time (not build time), so price changes propagate instantly to every page without a redeploy
Context-aware booking widget reads the origin/destination from the current page's route data and pre-fills the form; users land on the correct route and book without re-entering details
14 SEO-optimised blog posts authored in Sanity with Schema.org Article markup, structured with related-route internal links and FAQ sections for featured-snippet eligibility
Multilingual content model in Sanity supports locale variants per route; Framer Motion handles page transitions and scroll-triggered animations
What shipped
Website delivered and deployed on Vercel - 30 CMS-driven landing pages, live-pricing booking widget, multilingual support, and 14 SEO posts. DNS cutover pending on the client side.

// full stack
More case studies

4Fleet
Multi-tenant B2B fleet-management SaaS with an AI agent for email-to-quote parsing, dynamic pricing engine, and Stripe billing - live at 4fleet.io.

NumWise
Accounting SaaS with format-agnostic bank-statement import (CSV, XLSX, OFX, QIF, MT940, CAMT.053 from any bank or country), AI-assisted column mapping, and 113 shipped features - live at numwise.eu.
Want something built like this?
Free qualifying call - 20 minutes. Fixed price. Real code. You own it.