OpenIdle.
CASE STUDY

Kgaka Safaris

Web Development, Content Management

2026 – Present

Kgaka Safaris homepage on mobile

Rebuilding an AI-generated first draft into a fast, client-editable marketing site for a family hunting farm — and letting the owner run it without knowing what GitHub is.

Kgaka Safaris is a family-owned hunting farm on 17,000 acres of Limpopo bushveld, in the same family since 1938. The first version of the site was generated with an AI site builder: a React single-page app that shipped about 390 KB of JavaScript to run a menu toggle and a contact form, with every word hardcoded and the brochure PDF living only on the builder’s own CDN.

We rebuilt it as a static Astro site with Sanity as the content studio, deployed on Cloudflare. The owner now edits every heading, photo, focal point, price list and phone number himself, and his change is live about a minute after he presses Publish. Two designs ran side by side on live URLs so the client could compare them; the dark-first version won and went live on the real domain within two weeks.

ClientKgaka Safaris, Alldays, Limpopo
TimelineAugust 2026 – Present
ServicesWeb Development, Sanity CMS, Performance & Accessibility, Cloudflare Hosting
Kgaka Safaris species page on mobile
Kgaka Safaris homepage on mobile
THE CHALLENGE

A heavy AI-generated site the owner couldn’t change

The first draft looked the part but carried real problems. It shipped a full React runtime for a brochure site, its fonts were silently failing and falling back to system faces, the layout shifted as images loaded, and the 41 MB brochure existed only as a pointer to the builder’s storage. Photographs didn’t fit their boxes — the client’s one recurring complaint on every call.

The harder constraint was the person running it. The owner is a farmer and professional hunter, not a developer, and every git-backed content system on the market needs a GitHub account he didn’t have and didn’t want. The site also had to handle sensitive material carefully: guests who would rather not appear publicly, and photographs whose metadata revealed the location of a farm the family keeps private.

THE SOLUTION

Astro, Sanity and a measured approach to every pixel

We rebuilt the ten pages in Astro with static output, replacing the React runtime with about 13 KB of inlined vanilla JavaScript across the whole site. The render-blocking stylesheet was inlined, fonts were hand-declared with metric-matched fallbacks so layout shift dropped to zero, and the scroll listener was replaced with an observer that never touches layout. A custom script measures every hero heading against the brightest pixel of the photograph behind it at five viewport widths and fails the build on any accessibility miss.

Content moved into Sanity, chosen because its free plan gives the owner enough seats and storage while needing no developer accounts. A nightly job exports the dataset to git so a deleted document can always be restored. We rescued the brochure PDF byte-for-byte, stripped location metadata from every photo, applied soft blurs for guests who asked not to appear, and gave the owner a focal-point picker so every image finally crops around the animal.

THE RESULTS

Perfect scores, client in control

Lighthouse 100 across the board, a fraction of the JavaScript, and a site the owner edits himself.

100Lighthouse score in all four categories
13KBJavaScript shipped, down from ~390KB
0Cumulative layout shift
1minFrom Publish to live on the site
Kgaka Safaris gallery on mobile
Let's collaborateto something amazing
Let's collaborateto something amazing
Let's collaborateto something amazing
Let's collaborateto something amazing