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