
Business Context
WeRoad had grown from an Italian startup to a multi-country travel platform operating across Italy, Spain, France, and the UK. Their existing website was a single-market Italian build — tightly coupled content, hardcoded copy, and no infrastructure for localization. Each new market launch required duplicating the entire codebase and maintaining divergent forks, creating a maintenance nightmare that slowed expansion.
Technical Challenge
Rebuild the frontend to support multi-country deployment from a single codebase. The challenge was threefold: implementing a robust i18n system that went beyond simple string translation (market-specific imagery, pricing formats, legal disclaimers), creating a shared component library that allowed per-market customization without forking, and doing it all without disrupting the live Italian site that was generating revenue.
Approach & Decisions
I architected a Nuxt-based platform with a layered content strategy. At the base, a shared component library provided consistent UI across markets. Above that, a content layer used a combination of i18n keys and market-specific content modules that could override defaults. I chose Nuxt's built-in i18n module over a custom solution after evaluating three approaches — it gave us route-based locale prefixing, lazy-loaded translation bundles, and SEO-friendly hreflang tags out of the box. One decision I reconsidered: I initially planned to use a headless CMS for market content, but after prototyping, I realized the editorial workflow added complexity without enough benefit for the team size. We went with structured JSON files instead, which the marketing team could edit via PR reviews.
Outcomes
Launched 3 new country sites within 4 months from a single codebase. Mobile conversion increased 25%, average session duration grew by 90 seconds, and cart abandonment dropped 15%. The shared component library reduced per-market development time from 6 weeks to under 2 weeks.
System Design
Key Technical Decisions
Content Management Strategy
Structured JSON files with PR-based editorial workflow
Headless CMS (Contentful/Strapi), Database-driven content
Prototyped Contentful integration but the editorial overhead didn't justify the complexity for a 3-person marketing team. JSON files gave us version control, PR reviews for content changes, and zero additional infrastructure costs.
i18n Architecture
Nuxt i18n module with lazy-loaded translation bundles
Custom i18n solution, vue-i18n standalone
Nuxt's built-in module provided route-based locale prefixing and automatic hreflang generation. Custom solutions would have required reimplementing SEO optimizations that Nuxt handled out of the box.
Market Customization Pattern
Component slot overrides with market-specific content modules
Feature flags per market, Separate component variants
Slot-based overrides kept the shared library clean while allowing markets to inject custom content (legal disclaimers, local payment methods) without touching shared code.
Before & After
Market Launch Timeline
Each new market required 6+ weeks of development with a dedicated team forking the Italian codebase.
New markets launch in under 2 weeks using the shared platform with market-specific content modules.
Translation Bundle Size
All translations loaded upfront (~180KB).
Lazy-loaded per-locale bundles (~25KB initial load), with remaining translations fetched on navigation.
Want results like these
for your product?
Let's collaborate to build fast, accessible, and high-converting digital experiences that drive real business impact.
Let's Talk
Currently available for select consulting engagements and full-time roles.