Kgaka Safaris
Web Development, Content Management
2026 – Present

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.




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.
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.
Perfect scores, client in control
The rebuilt site scores 100 across performance, accessibility, best practices and SEO on mobile and desktop, ships a fraction of the JavaScript, and is fully edited by the owner himself with changes live in about a minute.
Lighthouse 100 across the board, a fraction of the JavaScript, and a site the owner edits himself.
