[ Case study ]
Five brand sites shared one creaking host; a plugin update to one took down all five one August weekend, and the manager's web contractor had no safe way to test changes — staging meant 'try it and see.'
CLIENT a vacation-rental property management company — FOCUS One repo, five sites, one pipeline
Representative examplesEvery case study in this library is an illustrative composite of the kind of engagement we deliver — written to show our method and standards, not to name clients.
Five vacation-rental brands share one operation: a property management company handling guest bookings, cleaning turnover, and owner relations along a stretch of coastline. Each brand has its own website for browsing homes, checking availability, and asking questions; all five feed the same booking engine through iframes and redirects. Everything web-side ran from a single shared hosting account, one control panel, and one contractor relationship. Content changes went from the office to the contractor to the live sites by hand. Peak season runs June through August and carries most of the year's revenue.
Five brand sites shared one creaking host; a plugin update to one took down all five one August weekend, and the manager's web contractor had no safe way to test changes — staging meant 'try it and see.'
We proposed consolidating all five sites into one Next.js codebase with per-site configuration, deployed on Vercel, so publishing becomes a merge with a preview URL instead of an FTP session on a shared host. The reasoning: the brands share booking-engine integration code and a content rhythm, so one pipeline serving five configured sites removes the five-fold maintenance without changing what guests see. Rollbacks would be instant and rehearsed before go-live, and the peak-season freeze would be enforced by policy — changes review on previews all summer, production moves only when the office approves.
Just as important is what we ruled out, and why:
All five sites moved into one Next.js codebase with per-site configuration, deployed on Vercel with preview URLs for every change — content publishing became a merge, not an FTP session.
Instant rollbacks were tested with a real incident drill before go-live, so peak season has a documented, practiced answer to a bad deploy.
Preview deploys let changes be reviewed and approved off-production during peak season, so the freeze protects guests without strangling the roadmap.
Delivered by the systems pod — engineer over 6 weeks, with working increments reviewed with the client every week.
Obstacle
The pilot migration used the quietest brand, and its smooth cutover hid a caching conflict between the new static layers and the booking engine's iframe parameters — it only surfaced when the busiest site followed.
Handled: We traced the cache key to the booking query string, added per-site cache rules, and ran a real incident drill, rehearsing rollback until a bad deploy was a two-minute event.
Obstacle
Two of the five brands' content owners had been pasting raw HTML for years; their pages broke silently under the stricter new pipeline and looked fine only in their own browsers.
Handled: We ported their markup through a linter that flagged every non-portable pattern, then sat with each owner through one publish so the first surprise happened with us present.
The headline: all five brands live on vercel with preview-deploy reviews and tested rollbacks — Shared host → per-site preview deploys, read from Deployment log. A second check: peak-season outages since migration (vs 2 in the prior season) at 0.
The manager stopped treating the website as a shared liability. Brand owners ask for changes again, because a change is now a reviewable preview instead of a favor from a busy contractor. The freeze reads as a calendar policy the office can explain, not a superstition. And when something did break in the first season — a bad redirect, not an outage — the rollback was a click and a note to the brand owner, not a weekend.
The result was read from Deployment log against the pre-engagement baseline over the stated window, with a guardrail check on peak-season outages since migration (vs 2 in the prior season). Where platform-reported numbers and business outcomes differ, this record says which layer it is quoting.
What we would do differently
We would migrate the busiest brand last, not first — the pilot brand's quiet traffic hid a caching issue that only surfaced on the high-booking site, and the order should have followed risk.
[ Related service ]
[ Related builds ]
Bot buyouts protected on-salesSubsequent on-sale days completed with bots challenged at the edge and origin load flat
Two years adrift maintained baselineSite current on a monthly cadence with verified restorable backups before recital season
[ Next step ]
Next case study