Case study · React · Motion
Haumart Cleaning
The challenge
The site needed to support two core business goals: help potential customers find the company through search and convert visits into enquiries. Although the website was live, it was not appearing in Google results, and its contact form did not reliably send messages. Both issues limited the site’s ability to generate leads.
The approach
I replaced the non-functional contact flow with a Cloudflare Pages Function, using Resend for email delivery and Cloudflare KV for status tracking. For search visibility, I investigated the site’s technical SEO setup and found invalid JSON syntax in the structured data, which meant Google could not process it. I corrected the markup and submitted the site through Google Search Console.
Implementation challenge
Image delivery was the most measurable performance issue. Two hero images were being served at more than 700 KB and 3 MB without optimisation. I converted the assets to WebP and added responsive `srcset` variants, increasing the mobile PageSpeed score from 77 to 82 and the desktop score from 97 to 99. This work is largely invisible in the interface, but it directly affects how quickly visitors can access the site.
What I’d improve
I would set up Google Search Console, sitemap submission, and structured-data validation at the beginning of every client project. These checks should be part of launch preparation rather than something discovered after a site has already been live.
Built with
- React
- Framer Motion
- Cloudflare Pages
- Cloudflare Pages Functions
- Cloudflare KV
- Resend

Static preview shown above. Open the live site to explore the full experience.