Skip to content
← All work Client website · Austin, TX

Kula Karate

Fifteen after-school karate clubs meeting on elementary campuses across Central Austin — and not one building to put in a hero photo. That single fact drove every structural decision on the site.

Built · awaiting client data Want one like it? →
26
pages generated from four JSON data files
15
campus landing pages, one per club
0
invented facts — unconfirmed data stays visibly unconfirmed

The insight that shaped the build

A parent looking for this business does not search "karate near me." They search "after school karate at [my kid's school]". So the architecture is one indexable landing page per campus rather than a single page listing all fifteen — and the home page hero is a campus finder, not a photograph. A parent's first question is "do you come to my school?", and the fastest possible answer to that question is worth more than any hero image.

What we built

A zero-dependency static-site generator. node build.js reads four data files and emits the whole site — one entry per club produces a full landing page, a row in the home-page finder, a sitemap entry and course-specific structured data, automatically. Adding a sixteenth club is a data edit, not a development job.

The three things we refused to do

No scraped reviews. The brief asked to build the site using the client's Yelp reviews. Those reviews are the copyright of the parents who wrote them, and republishing them exposes the client — not the developer — to the consequences. We built the testimonial system instead and supplied an email template for collecting real, permissioned quotes.

No scraped photographs. Same principle, with a sharper edge here: nearly every available image is of a minor. Photographs of other people's children need a signed parental release on file before they appear on a commercial website. The site ships with on-brand generated placeholders at the correct dimensions and a shot list to replace them.

No invented schedules. Fourteen of the fifteen clubs have no confirmed day and time. Filling those in would make the pages look finished — and would put a parent and child at a school door at the wrong hour on the first Tuesday. Those pages render an honest "email us for this semester's schedule" until the client confirms real times.

Why that's the whole point

It would have been faster to ship something that looked complete. The build instead surfaces its own gaps on every run, so the client can see precisely what's outstanding — and nobody discovers a fabricated class time by driving to it.

Full-length screenshot of the Kula Karate home page, with the campus finder above the fold followed by programme and trial sections
The full home page, top to bottom — captured from the built site. Scroll within the frame.

Status

The site builds clean and the validator passes. It is not launch-ready, and deliberately so: fourteen club schedules and the business's public name-address-phone details are still unconfirmed by the client. Those are the client's to supply, and the build will keep saying so until they are.