Steelcrest is a Next.js 16 template for roofing contractors, cladding specialists, building envelope firms and construction companies — the trades whose work is judged from the ground and specified on numbers. It ships 22 page templates covering 43 routes: six project case studies, five service pages, a seven-article blog with category tabs, a six-material shop with a working basket and a three-page checkout, two service plans with monthly and yearly pricing, and every utility page a real site needs. Built on the App Router with React 19 and TypeScript in strict mode, and every page prerenders to static HTML. No CMS or backend required.
If you fit residential roofs, install commercial systems, supply panels and tiles by the square metre or handle storm damage at short notice, this is the site with the pages already in it. Content lives in JSON or MDX files — add a case study and it appears in the grid and at its own URL with no component to touch — so you can launch in hours rather than weeks.
Tech Stack
- Next.js 16 — App Router, static prerendering for every route
- React 19 — server components by default, client components only where state actually lives
- TypeScript — strict mode, no
anyin the content layer - Hand-crafted CSS — one plain stylesheet driven by CSS custom properties. No utility framework, no CSS-in-JS, no build step beyond Next's own
- Self-hosted Inter — two WOFF2 subsets covering weights 100 to 900. No third-party font request at runtime
- No animation library — the scroll reveals, the mega-menu, the tab sets, the counters, the marquee and the scroll-linked sections are one TypeScript file that moves classes and custom properties; the CSS does the rest
- gray-matter — the only runtime dependency beyond React and Next
Included Pages and Templates
Marketing
- Home — full-bleed hero, slot-machine counters, a three-step process row that widens on hover, a before-and-after comparison row, a materials grid, a stacking service scrub, a scroll-driven testimonial rail with a background film, and an FAQ
- About — the firm, its numbers and its people
- Contact — an enquiry form and three departments
Work and services
- Project grid, plus 6 case study pages with type, location, year and material
- Service list, plus 5 service pages with their own scope and inclusions
Shop
- Materials catalogue, plus 6 material pages with specifications and a buy box
- A catalogue category page
- Slide-out basket, checkout, PayPal checkout and order confirmation
Content and pricing
- Blog with keyboard-navigable category tabs, plus 7 full-length articles
- Pricing grid with monthly and yearly billing, plus 2 service plan pages
Utility
- Style guide, licences, changelog, password-protected 401 and 404
22 page templates covering 43 routes, every one prerendered as static HTML.
Easy Content Editing
Everything a page prints lives in src/content/. Add a file and it publishes:
blog/*.mdx— the 7 articles: author, date, category, card and hero photographs, and the bodyprojects/*.mdx— the 6 case studies: the sheet of facts beside the title, and three labelled regions of body copyservices/*.mdx— the 5 service pagesplans/*.mdx— the 2 service plansproducts.json— the 6 materials: photograph, price range, two specifications and the values the basket storesplan-cards.json— the 4 pricing cards, two plans across two billing periodscategories.json,blog-categories.json,featured-posts.json,plates.json— the catalogue category, the blog's tab strip, the articles featured under every post, and the photographs a whole family shares
Bodies are plain Markdown — ### headings, paragraphs and - lists — placed inside the design's own markup, so the words are yours and the layout stays exact. Each file states its own order, so the arrangement lives with the content.
Re-theming is one file. Every colour, type size, spacing step and radius is a CSS custom property in the :root block at the top of public/assets/css/styles.css.
Performance and SEO
- Every route prerenders to static HTML — nothing is rendered on demand
- No third-party requests at runtime: no font CDN, no icon CDN, no analytics, no video embed
- Lazy-loaded imagery with responsive
srcsetrungs; above-the-fold artwork eager - The background film is
preload="none"behind a poster frame, so 2.9 MB is never fetched until someone scrolls to it - Per-page title, description and Open Graph and Twitter cards, generated from one shared helper
- Semantic HTML with a single
<h1>per page and a heading outline with no gaps - Skip link, landmarks, ARIA patterns on the tab sets, accordions, mega-menu and basket drawer, and every control keyboard reachable and screen-reader named
prefers-reduced-motionrespected throughout, and the site is fully readable with JavaScript switched off
Deployment
npm run build produces a fully static site. Deploy it to Vercel, Netlify, Cloudflare Pages, GitHub Pages, S3, or any static host — or run npm run start behind Node 20. No database, no API keys, no environment variables.
What You Get
- The complete Next.js 16 project, source included and commented throughout
- 22 page templates, 43 static routes
- A content layer of 20 MDX files and 5 JSON files
- A working basket and a three-page checkout in
localStorage - Full HTML documentation, a README, a changelog and a third-party licence file
- Self-hosted fonts and every image and video the demo uses
Requirements
- Node.js 20 or newer
- npm 10 or newer (pnpm, yarn and bun also work)
- Basic React and TypeScript familiarity to customise components; none needed to edit content
Frameworks & Libraries 2
Languages & Syntaxes 3
Developer Workflow 1
Supported browsers
Find more items like this
- Accessible
- App Router
- Blog
- Builder
- Building
- Cart
- Case Study
- Catalog
- Checkout
- Checkout Page
- Construction
- Construction Business
- Contact Page
- Contractor
- Corporate Business
- eCommerce
- Exterior
- Handyman
- Landing Page
- Mdx Blog
- Portfolio
- Pricing
- Pricing Page
- Product
- Product Catalog
- Remodeling
- Responsive
- Roofing
- SEO Friendly
- Service Page
- Shopping
- Shopping Cart
- Solar
- Static
Steelcrest Next.js 16 Roofing and Construction Template
- From
Promotional discount ends in 13 days
Use this item in one end product for personal or business projects and client work.
- Quality reviewed by Wrapmarket
- Instant access to downloads
- 14-day refund eligibility
- 6-month support period included
Verified customer feedback
Customer reviews
Only customers with qualifying access to this item can leave a review.
More items in this group
- 43 pages of projects, services and posts.
- Cart, checkout, tabs, mega menu, accordions.
- No jQuery, frameworks or build step.
More from Waida Studio
- Made with Next.js 16, React 19, and TypeScript
- Self-hosted processing on your own server
- Design system and style guide included
- Next.js 16 + React 19 + TypeScript, 40 routes
- MDX blog, projects & services, no CMS needed
- Working cart, checkout & pricing toggle
- 37 static routes. 11 posts. 6 case studies.
- Working cart and checkout. MDX content layer.
- Next.js 16. React 19. TypeScript. Fully static.
- 47 static routes. 6 posts. 9 integrations.
- MDX blog and integrations. JSON pricing plans.
- Next.js 16. React 19. TypeScript. Fully static.
- Self-hosted processing on your own server
- Vanilla JavaScript with no jQuery
- Design system and style guide included
- Next.js 16 App Router, React 19, TypeScript
- MDX blog, JSON pricing plans, localStorage cart
- All 30 routes prerendered static, SEO ready
- 49 static routes. Working cart and checkout.
- MDX case studies, blog, careers and services.
- Next.js 16. React 19. TypeScript. Fully static.
- 41 static routes. Cart and checkout.
- MDX case studies, journal and plans.
- Next.js 16. React 19. TypeScript.
- 51 static routes. 9 case studies. 10 articles.
- MDX blog work careers services. JSON plans.
- Next.js 16. React 19. TypeScript. Fully static.
- 32 static routes. 6 posts. 3 case studies.
- MDX content. Working cart and checkout.
- Next.js 16. React 19. TypeScript. Fully static.
- 41 static routes. 9 products. 9 trips.
- Cart, checkout, colour and size selection.
- Next.js 16. React 19. TypeScript. Fully static.
- 42 static routes. 5 case studies. 10 blog posts.
- MDX blog and projects. JSON listing and services.
- Next.js 16. React 19. TypeScript. Fully static.