Client case study

Rhythm for the Soul

Therapeutic drumming & events business · Astro 6, Tailwind v4

A 22-page rebuild for a facilitator whose work runs from primary schools to rest homes to fire shows. Static Astro build, a structured-data knowledge graph for search and AI answers, and a performance pass that took mobile PageSpeed from 67 to 91.

View live site (opens in new tab)
Role Designer & Developer
Stack Astro 6, Tailwind CSS v4, Formspree, Netlify
Year 2026

Rhythm for the Soul is run by Chewy Wilson, a therapeutic drumming facilitator and world musician on Auckland's North Shore who works throughout New Zealand. The work is warm and hands-on, and the previous site did not carry that; it also scored 67 on mobile PageSpeed with a 12-second largest-contentful-paint, slow enough to cost visits before a page had rendered.

The harder problem was range. One business runs primary-school workshops, sessions in aged care, inclusive and neurodiverse programmes, DRUMBEAT therapy groups, corporate team-building, fire shows and sound journeys. The site had to speak to a school coordinator, a rest-home activities lead and someone booking a birthday party without any of them wading through the others' pages to reach their own.

I built the site in Astro 6, styled with Tailwind CSS v4. Astro ships static HTML with no client framework by default, which suits a content site like this: 22 pages that share one structure but differ in copy, generated from a single BaseLayout plus reused Header, Footer and ContactForm components. The contact form lives in one component wired to Formspree, so it is identical on every page and changes in one place.

The thirteen services are grouped into three worlds so each visitor recognises their entry point straight away: Community & Education, Events & Entertainment, and Music & Wellness. Every service has its own page rather than a shared list, so the language and the call to action can match how that particular client decides to book.

Colour and type are defined once as design tokens in Tailwind v4's @theme block; every utility class on the site resolves back to that one palette, so the atmospheric dark identity stays consistent across all 22 pages.

The design leans on full-bleed photography and video, which is exactly the kind of content that wrecks load times if it is left to load naively. Most of the engineering went into keeping the atmosphere without paying for it in speed.

The heroes are CSS background-images, which the browser's preload scanner cannot see, so the largest image on the page was only discovered after the stylesheet parsed. I added a targeted, media-scoped preload for the single above-the-fold image per page; on the homepage that alone took desktop LCP from 1.8s to 0.8s. The web fonts (Fraunces and DM Sans) were moved off a render-blocking third-party origin and self-hosted, and the fingerprinted Astro build assets are served with a one-year immutable cache so internal navigation no longer blocks on revalidation.

Old site · mobile
67 Performance
12.0s LCP
Rebuild · mobile
91 Performance
3.4s LCP

The remaining mobile LCP is almost entirely connection-setup time on a throttled network rather than page weight. On desktop the rebuild scores a clean sweep in PageSpeed Insights:

Desktop · PageSpeed Insights
100 Performance
100 Accessibility
100 Best practices
100 SEO

For a local, service-led business, being found is the whole game. Every page emits JSON-LD structured data as a small knowledge graph: a LocalBusiness entity and a Person entity for the facilitator, cross-linked by @id, with a per-page Service entity added from a layout prop. Crawlers resolve them as one connected graph rather than repeated anonymous blocks, which is what feeds Google's local results and rich cards.

The same thinking extends to AI search. The site ships an llms.txt, a plain-language, link-rich summary of the business and its services written for large language models, alongside a generated sitemap (with the form thank-you page filtered out) and canonical URLs on every indexable page. The goal was a site that answers correctly whether the question is typed into Google or asked of an assistant.

Accessibility was built in, not bolted on: a skip-to-content link, keyboard-reachable navigation, and reveal-on-scroll animations that also fire on focus so a tabbing user never lands on an element still at zero opacity. All motion is disabled under prefers-reduced-motion, and the brand colours were adjusted where they failed WCAG AA contrast against the dark background.

The whole site is progressive enhancement. The intro loader is dismissed by JavaScript but hidden entirely via a <noscript> fallback, so a visitor with scripting disabled still sees the page rather than a permanent splash. Security headers (X-Frame-Options, X-Content-Type-Options, a referrer policy and a locked-down permissions policy) are applied through a Netlify _headers file on every response.

Rhythm for the Soul homepage: atmospheric dark design with drumming imagery and links to the school, rest home, and event services Rhythm for the Soul schools service page: a full-bleed hero of children playing djembe drums in a classroom, titled Schools, over the site's dark palette Rhythm for the Soul contact page: a Book a session enquiry form with name, email, phone and service-of-interest fields

The rebuild replaced the old presence entirely and is live at rhythmforthesoul.co.nz (opens in new tab): a faster, better-structured site that reads as one identity across every service and is set up to be found by search engines and AI tools alike.

“The new site looks professional, easy to navigate, inviting and it feels like me! I'm so happy with the finished product and I feel it will assist in the growth of my business.”

Chewy Wilson Rhythm for the Soul