A lean roofing site with no libraries and a Doncaster page that carries the schema

Doncaster roofing and damp proofing contractor with a long-scroll homepage, a Doncaster landing page and a WhatsApp quote request.

Client
A1 Roofing Yorkshire
Trade
Roofing and damp proofing
Based
Doncaster, South Yorkshire

What the business needed

A1 Roofing & Damp Proofing Ltd works out of Carcroft in Doncaster, seven days a week, with 5.0 from nine Google reviews at the time of the build. The material supplied was the business's own Google profile: the description, hours, company number and registered office. The site was written from that rather than from anything invented about the business.

What was built

A long-scroll homepage and one location landing page, Roofers Doncaster, which carries the RoofingContractor structured data with telephone, service area, address and hours. The contact form is plain HTML with native validation posting to Formspark; a WhatsApp button with a pre-filled quote request slides in a second and a half after load so it does not compete with the first impression.

There are no libraries for icons, animation or carousels. Icons are one hand-maintained SVG map, motion is CSS keyframes and transitions that respect the reduced-motion preference, and the review carousel is hand-rolled with touch swiping. The hero is two separate layouts for mobile and desktop rather than one that adapts, which costs some duplication and buys predictable markup on each.

A services grid and a project gallery are built and ready in the code but not yet on the page, trimmed for launch and available to switch on without new work.

Zero UI dependencies

No icon library, no animation library, no carousel library. A useful reference for what a trade site needs, which is not much.

WhatsApp with the message written

The floating button opens a chat with a quote request already typed, and waits before appearing.

Built from the profile, not a template

Hours, company number and description came straight from the business's own Google listing.

Getting it found

The homepage title names the trade and both Yorkshire and Doncaster. The location page is the first of what a contractor covering 'Doncaster and nearby areas' can extend town by town, and it is where the structured data sits.

Under the hood

What the site runs on. The same approach is described on the service pages it came from.

  • Next.js 16, static export
  • React 19 and TypeScript
  • Tailwind CSS v4
  • Formspark form, native validation
  • Hand-written SVG icons
  • CSS keyframe motion
  • RoofingContractor schema on the location page
  • WhatsApp quote button