active
2026
Bali Hidden Villas
An SEO-first marketing site for three luxury Bali villas, with an embedded CMS and live rates pulled from the client's booking platform.

Overview
Bali Hidden Villas markets three properties — Villa Tau, Villa Cocoa Maya, and Villa Sagitta — with organic search as the primary acquisition channel and a booking enquiry as the conversion. Every villa page, blog post, and promotion is editable by the client through Payload CMS, embedded in the same Next.js app rather than run as a separate service.
Nightly rates and guest reviews come from OwnerRez, the client's property management system, so pricing on the site tracks whatever they set there. Pages render with ISR on a 60-second window, and an admin-only revalidation endpoint lets the client push a rate change live immediately instead of waiting for the window to lapse.
The whole app ships as a single Docker image built in CI and pulled by the server — SQLite and uploaded media live on disk, so there is no external database or object store to pay for or keep in sync. Schema changes travel as committed Payload migrations, applied deliberately to UAT and then production, and production content is never overwritten by a deploy.
Highlights
▸
CMS embedded in the app itself — one deployable, no separate content service to run
▸
Live rates and reviews synced from OwnerRez, with admin-triggered revalidation for instant updates
▸
SEO surface built in: per-page metadata, LodgingBusiness and BlogPosting JSON-LD, and a sitemap that picks up new posts without a redeploy