Handyman Website Template
Demo brand: HOLLIN & PEGG · Handyman / small home repairs · 19 routes · Astro 7 + Tailwind 4
Live preview
The demo is a full desktop site. Open it in a new tab ↗
About this handyman website template
A complete website for a handyman or small home-repair business: a job basket that adds up small jobs into one fixed price and the earliest slot, a "small jobs, fixed prices" list in the hero, six service pages, a prices page with all three rates, the team story, three how-to guides, an FAQ and a booking form that arrives pre-filled. Nineteen built pages, all driven by content and data files.
It looks like a tidy, trusted local firm. Warm white pages with pale plaster blocks, one dark denim band, real photography of hands fitting hinges, shelves, taps and windows in real homes, and one denim-blue accent. Zilla Slab for headings, with an italic accent phrase, and Asap for everything else.
Every section answers what a homeowner wants to know before they ring: what will it cost, can you do several jobs in one visit, when can you come, who turns up and what if it goes wrong. The basket prices the visit hourly, half day and full day and charges whichever is cheapest, the comparison table shows when a specialist trade is the better call, and job-ticket reviews show the time on site and the price paid. Motion is one quiet reveal.
The 19 pages you get
- Home
/ - Headline, price and call buttons and a trust line beside a "small jobs, fixed prices" card, then a photo strip, promises, six job groups, the team band, how a visit works, the job basket, handyman vs specialist vs DIY, job-ticket reviews, how-to guides, FAQ and a closing call to action.
- Services
/services/ - All six job groups with prices from.
- Service pages
/services/…/ - TV and mirror hanging, flat-pack assembly, shelves and curtain poles, doors and windows, taps and sealant, painting and touch-ups: each job with its set time and price, what is included and a button that adds it to the basket.
- Prices
/prices/ - The hourly, half-day and full-day rates, the job basket, the full price list and pricing questions.
- About
/about/ - How the firm started, why prices are fixed, why everyone is employed, what every visit looks like, the area covered and recent job tickets.
- How-to guides
/journal/ - A card list with the tools needed and the time each job takes. Add a Markdown file and it appears here and in the sitemap.
- Guides
/journal/…/ - Three written guides: fixing a dripping tap, a door that sticks and hanging a heavy mirror.
- FAQ
/faq/ - Every question, grouped under booking, pricing and the day itself.
- Book a visit
/contact/ - Booking request with the jobs, estimate, preferred visit and date, postcode and access notes, filled in from the basket or any job button.
- Privacy and terms
/legal/…/ - Two starter legal pages on a shared layout.
- 404
/404 - Designed, with a way back to home and to booking.
What is in the build
- A job basket: pick jobs and quantities, see the total time on site, the price at the hourly, half-day and full-day rate, which one you will be charged and the earliest slot, then book with everything carried to the form
- A hero price list where every job adds itself to the basket
- Every job, set time, rate and slot rule in src/data/jobs.ts, with the pricing maths in src/lib/basket.ts and tested
- A handyman vs specialist trade vs DIY table that stacks row by row on phones instead of scrolling sideways
- Services and guides as content collections, and every business fact, opening hour and area in one file
- Real photography, every image credited in LICENSING.md; one accent colour and two fonts rebrand the whole site; Vitest and Playwright suites included
The design decision
Every template in this catalog is loud in exactly one channel and deliberately quiet in the other three. That single rule is what stops 71 different worlds reading as one design system in different paint.
- The world
- Warm white ground with pale plaster blocks and one dark denim band, Zilla Slab over Asap, real photos of hands fitting hinges, shelves, taps and windows, and one denim-blue accent.
- The mechanic
- A job basket adds up TV hanging, shelves, flat-pack, taps and doors by quantity, prices the visit hourly, half day and full day, charges the cheapest and shows the earliest slot, then pre-fills the booking form; the hero price list adds jobs straight to it. Motion is one quiet reveal.
- Loud channel
- Imagery
- Imagery. Hands fitting hinges, shelves, taps and windows in real homes
- Type & palette
- Zilla Slab · Asap
-
#faf8f4#1b2130#2f5496
Who it is for
Built for handymen, odd-job firms and small home-repair teams that do TV hanging, flat-pack, shelves, doors, taps and touch-up painting. It suits a business that wants customers to see a fixed price and book before they ring, and it works with any currency or rates by editing one data file.
Under the hood
- Astro 7 · static output, zero client framework
- Tailwind 4 · one @theme block holds the palette
- MDX content collections for the blog
- GSAP + Lenis for the scroll work, reduced-motion aware
- Self-hosted woff2 — no Google Fonts request
- Sitemap, canonicals and per-route meta wired
- Vitest + Playwright suites in the repository
- Zero third-party requests · strict CSP-ready
How to get started
- 01 Accept the repository invite and clone it.
- 02 Run
npm install, thennpm run dev. - 03 Replace the content in
src/data/with your own — that is where the brand, the copy and every list live. - 04 Swap the images in
public/images/and the palette in the@themeblock. - 05 Run
npm run buildand deploydist/anywhere static.
Questions
How do I change the jobs, times and rates?
Edit src/data/jobs.ts. The jobs, their set times, the hourly, half-day and full-day rates and the slot rules all live there, and the basket, hero price list, service pages and prices page update together.
Is this template really free?
Yes. You get the full source in a private GitHub repo: every page, the job basket, the photos and the tests. Paid templates also ship Claude Code skills for editing; this one does not.
Where do bookings go, and what about my business details?
The booking form posts nowhere by default; point it at your form backend, and the README shows how. The company number, trade association and insurance lines are placeholders in normal sentences in src/data/site.ts, to fill in before launch.
What exactly do I get for free?
Access to a private GitHub repository holding the complete Astro source of this template — every route you see in the preview, the content model, the images and the tests. Updates arrive in that same repository.
How many sites can I build with one licence?
As many as you like, for yourself or for clients. The licence is per buyer, not per project. The one thing you may not do is resell or redistribute the source as a template, theme or starter kit.
Do I need to know Astro?
It helps, but the common case is editing content and colour. Content lives in typed objects under src/data, colour lives in one @theme block, and npm run dev shows the result. Deploying is a static folder — Cloudflare Pages, Netlify and Vercel all take it as-is.
Is anything loaded from a third party?
No. Fonts are self-hosted woff2, there is no analytics, no tag manager, no CDN script and no external CSS. The build ships static HTML under a strict Content-Security-Policy.
More trades & industry templates
KELMER OVERHEAD DOOR
Garage door repair
Loud
Imagery
TORWICK LOCK & SAFE
Locksmith / master keying
Loud
Imagery
KANWICK STEELWORKS
Steel fabrication
Loud
Imagery
Crowder Plumbing & Drainage
Plumbing & drainage
Loud
Imagery
BRISKWELL CLEANING CO.
Contract cleaning
Loud
Imagery