A dent repair site where the before and after does the selling
Elland dent removal specialist with a drag-to-compare before and after gallery and a photo-upload quote form.
- Client
- CEO Paintless Dent Repair
- Trade
- Paintless dent repair
- Based
- Elland, West Yorkshire
- Live since
- 2026
What the business needed
Cody repairs dents without filler or respray, which keeps the factory paint intact and matters to anyone returning a lease car or selling one. He started as a technician at a car supermarket, went independent taking private and trade work, and became fully self-employed in July 2021. This was the first proper website for the business.
The job of the site was to show the work rather than describe it. A dent that has been removed properly leaves nothing to see, so the persuasive material is the pair of photographs either side of the repair. Everything else, the method explanation, the trade referrals, the service area, sits underneath that.
What was built
Four pages: home, about, contact and privacy, written in the first person as the owner rather than in agency voice. The hero drops the vehicle photograph over a red enquiry band with a three-field callback form, name, postcode and phone, plus an optional photo of the dent.
Photo upload on a static site needs somewhere to put the file, so uploads go to Uploadcare and the form itself posts to Formspark. The upload widget is about 380KB of JavaScript, so it is not loaded until someone actually moves towards the field. Everyone else gets a plain button and none of the weight.
The before and after comparison is a drag slider built on a real range input, so it works by keyboard and screen reader as well as by touch. There is no animation library on the site at all: the hero entrance and section reveals are CSS, which keeps every page a server component and the bundle small.
Reviews quoted exactly as written
The two reviews on the site were copied from the live Google and Facebook profiles, including a customer's misspelling of the owner's name. The rule in the code is that editing a customer's words turns evidence into copy.
Schema that claims only what is known
The AutoRepair structured data leaves out rating, opening hours, price range and street address because none had been confirmed. An unverified claim in markup is a manual-action risk, not a free win.
Analytics gated behind consent
Google Analytics is not requested at all until the visitor accepts, and withdrawing consent tears it down and deletes the cookies. This is stricter than Google's own Consent Mode default.
A map drawn for the job
The hero and page headers sit on OpenStreetMap linework with the towns Cody covers labelled by position, rather than a stock photo of a car. Attribution is in the footer as the licence requires.
Getting it found
The site targets Elland and Halifax in the title and description and names the surrounding towns in the hero map: Brighouse, Sowerby Bridge, Ripponden, Hebden Bridge, Todmorden and Cleckheaton. Whether the service is mobile was left out of the copy until Cody confirms it, because a service promise has to come from the business rather than be inferred from a review.
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 forms with honeypot
- Uploadcare photo uploads, lazy-loaded
- CSS-only motion, no animation library
- Consent-gated GA4
- AutoRepair schema