Roofing Contractor Website Template
Summit Roofing Co. is the local-service template in the Siteglade library: a landing page for a Denver roofing contractor covering replacement, repair, metal roofing and storm restoration for both residential and commercial customers.
It is the least decorative template in the set, on purpose. A trade website has one job — turn a search into a phone call or a quote request — and every block on this page is arranged around that. There is no preloader, no webfont download, no scroll choreography competing with the phone number.
It is a Next.js 15 project and it is forkable on the Free plan, which makes it the natural starting point for a small business that wants a real site online today rather than a design exercise.
Built for phone calls and quote requests
The page opens with a glass navbar over a photo hero, and the primary action is visible before any scrolling happens. Directly beneath sits a stats bar, then six service cards — roof replacement, roof repair, storm and hail damage, metal roofing, gutters and exteriors, and inspections and maintenance — so a visitor who arrived searching for one specific problem finds their words on screen within a second.
Then comes the part most contractor sites skip: a reasons section and a four-step process. Licensed, bonded and insured; premium materials; a workmanship warranty; one dedicated project manager. Request an estimate, free roof inspection, clear fixed quote, installation and cleanup. Homeowners hesitate because they do not know what will happen after they call, and this block answers that in four lines.
A vertical testimonial marquee and an FAQ accordion handle the remaining objections, and the page closes with an aurora-background contact CTA. The brand details — company name, phone number, email and city — are all defined once at the top of lib/data.ts, alongside the services, reasons, steps, testimonials and FAQ arrays.
The blocks it ships with
Every block is a component in components/, and all the copy that fills them lives in lib/data.ts:
- Navbar — glass-effect fixed header with the phone number as a persistent action
- Hero — full-width photograph with headline and a primary call to action
- Stats — a compact credibility bar
- Services — six cards, one per service line
- Why choose — four reasons covering licensing, materials, warranty and project management
- How it works — the four-step process from estimate to cleanup
- Marquee and testimonials — a vertical scrolling wall of customer quotes
- FAQ — an accordion of the questions a homeowner asks before calling
- CTA — an aurora-background contact block
- Footer — service areas, contact details and legal line
Design notes
Blue and teal on near-white, with a glass navbar that lets the hero photograph read through the header. The blue is doing conventional work here — trust, trade, insurance — and the teal keeps it from looking like a bank. Card corners are generous, shadows are soft, and nothing on the page uses a treatment that would look dated in three years.
The template uses the system font stack with no webfonts at all. That is a performance decision that matters more for a local business than it does for a luxury brand: the page paints immediately on a phone with a poor connection in a driveway, which is exactly where a roofing site gets read.
Tailwind v4 is configured CSS-first with an @theme block, Framer Motion 11 handles the reveal animations through a shared reveal wrapper, and the aurora background on the closing CTA is the one moment of visual indulgence on the entire page.
The stack under the hood
Intentionally minimal. Fewer dependencies means fewer things to break and a faster first paint.
- Next.js 15 with the App Router
- React 19 and TypeScript
- Tailwind CSS v4 with a CSS-first @theme block
- Framer Motion 11 for section reveals
- System font stack — no webfont requests
- All content centralized in lib/data.ts
Adapting it with a Siteglade prompt
This template moves further from roofing than you would expect. The underlying shape — six services, four reasons, four steps, testimonials, FAQ, quote request — fits nearly any trade or home service.
A prompt that works: "Rebuild this for Marsh HVAC, a heating and cooling contractor serving Portland and the west suburbs. Change the six services to furnace installation, AC installation, heat pump conversion, duct cleaning, emergency repair and annual maintenance plans. Rewrite the four process steps around a same-day service call. Update the phone number to 503-555-0184 and the city to Portland. Keep the blue but make the accent orange."
Because the brand block, services, reasons, steps and FAQ are all arrays in one file, the agent completes that kind of rewrite in a single pass, and the sandboxed preview shows the result while it edits. After that, use the visual style editor to click on the hero and swap the photograph.
What to change first
For a local business the ranking is not aesthetic, it is informational:
- The phone number and email in the brand block — a wrong number is the only unrecoverable mistake here
- The city and service area, which is what local searches actually match on
- The six service cards, worded the way customers describe their problem rather than the way the trade does
- Licensing, insurance and warranty claims — only state what is true for your business
- The site title and description in Siteglade site settings, since that is what appears in search results
| Property | Value |
|---|---|
| Template name in the picker | Roofing Service |
| Framework | Next.js 15, App Router |
| Builder category | Website |
| Plan required to fork | Free, Pro or Max |
| Palette | Blue and teal on near-white |
| Typography | System font stack, no webfonts |
| Service cards | Six |
| Content file | lib/data.ts |
Frequently asked questions
Can I use this for a trade other than roofing?
Yes, and most people do. Plumbing, HVAC, electrical, landscaping, cleaning and pest control all fit the same six-services, four-steps, quote-request shape. Tell the agent your trade and your service lines and it rewrites the arrays in one pass.
Will it rank for my city?
The template gives you the on-page basics — a city named in the copy, real service descriptions and an FAQ. Search visibility also depends on things outside any template, like your business listing and reviews. Set the site title and description in site settings so search results show the right text.
Is the Free plan enough for a business site?
You can fork this template and publish to production on Free, which keeps a small Siteglade badge on the site. A custom domain, analytics and GitHub export require Pro or Max.
How do I add more than six services?
Add entries to the services array in lib/data.ts, or just ask the agent — the grid handles a longer list, though six to eight is usually where a visitor stops reading carefully.