Plumber Website Prompt — Free AI Prompt for Plumbing & Trade Websites

Free AI prompt for a modern plumber website design — paste into Bolt, Lovable or v0. Dark theme, electric blue, emergency CTA. Strong starting point for any trade website.

# Plumber Website — SWIFT Plumbing Build a modern, trustworthy plumbing company website called "SWIFT Plumbing" — dark charcoal background, electric blue accent (#0EA5E9), clean sans-serif typography. Phone number and emergency availability front and center. Looks nothing like a typical plumber site. --- ## Tech Stack ``` React + Vite + TypeScript + Tailwind CSS + Framer Motion (motion/react) + lucide-react ``` --- ## Design System ```css :root { --background: 220 25% 7%; --foreground: 210 20% 96%; --primary: 199 89% 48%; /* #0EA5E9 electric blue */ --primary-foreground: 0 0% 100%; --muted: 220 20% 12%; --muted-foreground: 215 15% 55%; --border: 220 18% 18%; --card: 220 22% 10%; } ``` --- ## Typography ```html <link href="https://fonts.googleapis.com/css2?family=Plus+Jakarta+Sans:wght@400;500;600;700;800&display=swap" rel="stylesheet"> ``` - **Display headings**: Plus Jakarta Sans 800, tight tracking - **Section headings**: 700 - **Body / UI**: 400–500 - **Labels**: 600, uppercase, tracking-[0.14em], text-xs --- ## Button System — Apply to every button, no exceptions ```tsx // Small — navbar, secondary links className="h-10 px-5 rounded-lg inline-flex items-center justify-center gap-2 shrink-0 whitespace-nowrap text-sm font-semibold transition-all duration-200" // Default CTA — section buttons className="h-12 px-7 rounded-xl inline-flex items-center justify-center gap-2 shrink-0 whitespace-nowrap text-sm font-bold transition-all duration-200" // Large CTA — hero, emergency sections className="h-14 px-10 rounded-xl inline-flex items-center justify-center gap-2 shrink-0 whitespace-nowrap text-base font-bold transition-all duration-200" ``` **Non-negotiable rules:** - `h-{n}` explicit height on every button — never rely on padding alone - `inline-flex items-center justify-center` — never `flex`, never block - `shrink-0` — button never compresses inside flex parent - `whitespace-nowrap` — text never wraps inside button - Icons inside buttons: always `w-4 h-4 shrink-0` --- ## Visual Effects ### 1. Blue glow — CTA buttons + phone ```css .glow-blue { box-shadow: 0 0 24px rgba(14,165,233,0.35), 0 0 48px rgba(14,165,233,0.12); transition: box-shadow 0.3s ease, transform 0.2s ease; } .glow-blue:hover { box-shadow: 0 0 36px rgba(14,165,233,0.55), 0 0 72px rgba(14,165,233,0.2); transform: translateY(-2px); } ``` ### 2. Animated stat counters ```tsx function useCounter(target: number, duration = 1800, inView: boolean) { const [count, setCount] = useState(0) useEffect(() => { if (!inView) return let start = 0 const step = (timestamp: number) => { if (!start) start = timestamp const progress = Math.min((timestamp - start) / duration, 1) const ease = 1 - Math.pow(1 - progress, 3) setCount(Math.floor(ease * target)) if (progress < 1) requestAnimationFrame(step) } requestAnimationFrame(step) }, [inView, target, duration]) return count } // Trigger via useInView({ once: true }) ``` ### 3. Glassmorphism — navbar + cards ```css /* Navbar */ background: rgba(14, 20, 32, 0.82); backdrop-filter: blur(14px); border-bottom: 1px solid rgba(255,255,255,0.06); /* Cards */ background: rgba(255,255,255,0.03); backdrop-filter: blur(6px); border: 1px solid rgba(255,255,255,0.07); box-shadow: inset 0 1px 0 rgba(255,255,255,0.06); ``` ### 4. Staggered entrance (Framer Motion) ```tsx initial={{ opacity: 0, y: 28, filter: "blur(8px)" }} whileInView={{ opacity: 1, y: 0, filter: "blur(0px)" }} transition={{ duration: 0.55, ease: "easeOut", delay: index * 0.09 }} viewport={{ once: true, margin: "-60px" }} ``` ### 5. Grain texture overlay ```tsx <div className="fixed inset-0 z-50 pointer-events-none opacity-[0.25]" style={{ backgroundImage: `url("data:image/svg+xml,%3Csvg viewBox='0 0 256 256' xmlns='http://www.w3.org/2000/svg'%3E%3Cfilter id='noise'%3E%3CfeTurbulence type='fractalNoise' baseFrequency='0.9' numOctaves='4' stitchTiles='stitch'/%3E%3C/filter%3E%3Crect width='100%25' height='100%25' filter='url(%23noise)'/%3E%3C/svg%3E")`, mixBlendMode: "overlay", }} /> ``` --- ## Component Breakdown ### 1 — Navbar - Fixed top, h-[68px], z-50, glass background - max-w-[1120px] mx-auto px-6, flex justify-between items-center - Left: `<span className="text-lg font-extrabold tracking-tight">SWIFT <span className="text-primary">Plumbing</span></span>` - Center (desktop only): nav links `text-sm font-medium text-muted-foreground hover:text-white transition-colors` — "Services · About · Areas · Contact" - Right: phone CTA button ```tsx <a href="tel:5550123456" className="h-10 px-5 rounded-lg inline-flex items-center justify-center gap-2 shrink-0 whitespace-nowrap bg-primary text-white text-sm font-bold glow-blue"> <Phone className="w-4 h-4 shrink-0" /> (555) 012-3456 </a> ``` - Mobile: logo left + same phone button right, center nav hidden --- ### 2 — Hero - `min-h-screen relative flex items-center overflow-hidden` ```tsx {/* Image: plumber in professional uniform working under kitchen sink, tools in hand, warm home interior, soft natural light, documentary photography style */} <img src="" alt="Professional plumber at work" className="absolute inset-0 w-full h-full object-cover object-center" /> <div className="absolute inset-0 bg-gradient-to-r from-[rgba(14,20,32,0.97)] via-[rgba(14,20,32,0.80)] to-[rgba(14,20,32,0.25)]" /> <div className="absolute inset-x-0 bottom-0 h-48 bg-gradient-to-t from-[rgba(14,165,233,0.05)] to-transparent" /> ``` - Content: `relative z-10 max-w-[1120px] mx-auto px-6 w-full` - Inner content: `max-w-[580px]` **Label:** `text-xs font-semibold uppercase tracking-[0.2em] text-primary mb-5 flex items-center gap-2` - `<span className="w-2 h-2 rounded-full bg-primary animate-pulse shrink-0" />` + "Available 24/7 · Emergency Service" **H1:** `text-[clamp(2.8rem,6vw,5.2rem)] font-extrabold leading-[1.06] tracking-tight text-white mt-0` ``` Fast, Reliable Plumbing You Can Count On. ``` **Sub:** `text-base text-muted-foreground mt-6 leading-relaxed` — "Licensed and insured plumbers serving the greater metro area. We show up on time, fix it right, and leave your home cleaner than we found it." **CTAs:** `flex flex-wrap gap-3 mt-9` ```tsx {/* Primary */} <a href="tel:5550123456" className="h-12 px-8 rounded-xl inline-flex items-center justify-center gap-2 shrink-0 whitespace-nowrap bg-primary text-white text-sm font-bold glow-blue"> <Phone className="w-4 h-4 shrink-0" /> Call Now — (555) 012-3456 </a> {/* Secondary */} <button className="h-12 px-8 rounded-xl inline-flex items-center justify-center gap-2 shrink-0 whitespace-nowrap border border-border text-white text-sm font-medium hover:border-primary/50 transition-colors"> <ClipboardList className="w-4 h-4 shrink-0" /> Get a Free Quote </button> ``` **Trust badges:** `flex flex-wrap gap-x-6 gap-y-3 mt-10 pt-8 border-t border-border` Each: `flex items-center gap-2 text-sm text-muted-foreground shrink-0` - `<ShieldCheck className="w-4 h-4 text-primary shrink-0" />` + "Licensed & Insured" - `<Clock className="w-4 h-4 text-primary shrink-0" />` + "60-Min Response" - `<Star className="w-4 h-4 text-primary shrink-0" />` + "5-Star Rated" - `<Wrench className="w-4 h-4 text-primary shrink-0" />` + "15 Years Experience" --- ### 3 — Services - `py-24 md:py-32 bg-[hsl(var(--background))]` - max-w-[1120px] mx-auto px-6 - Label: `text-xs font-semibold uppercase tracking-[0.2em] text-primary mb-4` — "What We Fix" - H2: `text-4xl md:text-5xl font-extrabold tracking-tight text-white` — "Every plumbing problem. One call." - Sub: `text-sm text-muted-foreground mt-4 max-w-[480px]` — "From dripping taps to full pipe replacements — residential and commercial, across the metro area." - Grid: `grid grid-cols-1 sm:grid-cols-2 md:grid-cols-3 gap-4 mt-14` **Card:** `rounded-2xl p-6 border group hover:border-primary/30 transition-all duration-300` + glass CSS - Icon: `w-9 h-9 text-primary mb-5 group-hover:scale-110 transition-transform shrink-0` - Title: `text-base font-bold text-white mb-2` - Body: `text-sm text-muted-foreground leading-relaxed` - Bottom bar: `h-px w-0 bg-primary group-hover:w-full transition-all duration-500 mt-5` | Icon | Title | Description | |---|---|---| | `Droplets` | Emergency Repairs | Burst pipes, major leaks, no water at all — on call 24/7, typically on-site within the hour. | | `Thermometer` | Water Heater | Installation, repair, and replacement of tank and tankless water heaters. Hot water restored fast. | | `Waves` | Drain Cleaning | Blocked sinks, showers, or toilets cleared with professional-grade equipment. No mess left behind. | | `Bath` | Bathroom Fitting | Full bathroom plumbing installs — baths, showers, basins, and toilets fitted to the highest standard. | | `GitBranch` | Pipe Repair | Leaking, corroded, or cracked pipes repaired or relined without unnecessary excavation. | | `Building2` | Commercial | Offices, restaurants, and multi-unit buildings. Scheduled maintenance and reactive call-outs. | --- ### 4 — Stats - `py-20 bg-[hsl(var(--muted))]` - max-w-[1120px] mx-auto px-6 - `grid grid-cols-2 md:grid-cols-4 gap-8 text-center` | Target | Suffix | Label | |---|---|---| | 2400 | + | Jobs Completed | | 15 | yrs | In Business | | 60 | min | Avg. Response | | 98 | % | Happy Customers | Each block: - Number+suffix: `text-5xl font-extrabold text-primary tabular-nums` — animated counter - Label: `text-xs font-semibold uppercase tracking-[0.16em] text-muted-foreground mt-2` - Desktop: right border `border-r border-border` on first 3, removed on mobile --- ### 5 — How It Works - `py-24 md:py-32 bg-[hsl(var(--background))]` - max-w-[1120px] mx-auto px-6 - Label: "Our Process" · H2: `text-4xl md:text-5xl font-extrabold tracking-tight text-white` — "Fixed in three simple steps." - Grid: `grid grid-cols-1 md:grid-cols-3 gap-10 mt-16 relative` - Connecting dashed line (desktop only): `absolute top-7 left-[20%] right-[20%] h-px border-t border-dashed border-border hidden md:block` **Step:** - Number box: `w-14 h-14 rounded-2xl bg-primary/10 border border-primary/20 inline-flex items-center justify-center text-xl font-extrabold text-primary mb-6 shrink-0` - Title: `text-lg font-bold text-white mb-3` - Body: `text-sm text-muted-foreground leading-relaxed` | # | Title | Body | |---|---|---| | 01 | Call or Book Online | Call us directly or fill in the quick form. Tell us what's wrong — we'll give you an honest estimate over the phone. | | 02 | We Show Up Fast | A licensed plumber arrives at your door, on time, with everything needed to diagnose and fix the problem. | | 03 | Problem Solved | We fix it right the first time, clean up after ourselves, and follow up to make sure everything's working perfectly. | --- ### 6 — Testimonials - `py-24 md:py-32 bg-[hsl(var(--muted))]` - max-w-[1120px] mx-auto px-6 - H2: `text-4xl font-extrabold tracking-tight text-white mb-14` — "Don't take our word for it." - Grid: `grid grid-cols-1 md:grid-cols-3 gap-5` **Card:** `rounded-2xl p-6` + glass CSS - Stars: `flex gap-0.5 mb-4` — 5× `<Star className="w-4 h-4 text-primary fill-primary" />` - Quote: `text-sm text-foreground leading-relaxed` - Author row: `flex items-center gap-3 mt-5` - Avatar: `w-9 h-9 rounded-full bg-primary/20 inline-flex items-center justify-center text-primary text-xs font-bold shrink-0` — initials - `<div><p className="text-sm font-semibold text-white">Name</p><p className="text-xs text-muted-foreground">Service</p></div>` | Quote | Author | Service | |---|---|---| | "Showed up within 45 minutes on a Sunday morning. Fixed a burst pipe under the kitchen sink quickly and cleanly. Will always use SWIFT." | Mark T. | Emergency Repair | | "Very professional and honest. Gave me a clear quote upfront, stuck to it, and finished ahead of schedule. Highly recommend." | Lisa R. | Bathroom Fitting | | "Had a blocked drain two other plumbers couldn't fix. SWIFT sorted it in under an hour. Brilliant service, fair price." | James K. | Drain Cleaning | --- ### 7 — Emergency CTA - `relative py-24 md:py-32 overflow-hidden` ```tsx {/* Image: close-up of dripping water pipe, dramatic dark background, high contrast, urgent mood */} <img src="" alt="Emergency plumbing" className="absolute inset-0 w-full h-full object-cover object-center" /> <div className="absolute inset-0 bg-[rgba(14,20,32,0.92)]" /> <div className="absolute inset-0 bg-gradient-to-r from-primary/8 to-transparent" /> ``` - Content: `relative z-10 max-w-[720px] mx-auto px-6 text-center` - Label: `text-xs font-semibold uppercase tracking-[0.2em] text-primary mb-4 inline-flex items-center justify-center gap-2` - `<span className="w-2 h-2 rounded-full bg-primary animate-pulse shrink-0" />` + "24/7 Emergency Line" - H2: `text-[clamp(2.4rem,6vw,4.5rem)] font-extrabold tracking-tight leading-tight text-white` — "Plumbing emergency? We'll be there." - Sub: `text-sm text-muted-foreground mt-5` — "No call-out fees after hours. Licensed plumbers available around the clock for urgent repairs." ```tsx <a href="tel:5550123456" className="mt-10 h-14 px-12 rounded-xl inline-flex items-center justify-center gap-3 shrink-0 whitespace-nowrap bg-primary text-white text-base font-bold glow-blue"> <Phone className="w-4 h-4 shrink-0" /> Call (555) 012-3456 Now </a> ``` - Fine print: `text-xs text-muted-foreground/50 mt-5` — "Average on-site arrival: 60 minutes or less" --- ### 8 — Footer - `py-14 border-t border-[hsl(var(--border))]` - max-w-[1120px] mx-auto px-6 - `grid grid-cols-1 md:grid-cols-3 gap-10 items-start` - Col 1: Logo + tagline `text-sm text-muted-foreground mt-3 leading-relaxed` — "Licensed and insured plumbers serving the greater metro area since 2010." + `text-xs text-muted-foreground mt-4` — "© 2025 SWIFT Plumbing" - Col 2: heading "Services" + links list `text-sm text-muted-foreground hover:text-white transition-colors` — Emergency · Water Heater · Drain Cleaning · Bathroom · Pipe Repair · Commercial - Col 3: heading "Contact" + `flex items-center gap-2 text-sm text-muted-foreground` rows: - `<Phone className="w-4 h-4 shrink-0 text-primary" />` + "(555) 012-3456" - `<Mail className="w-4 h-4 shrink-0 text-primary" />` + "hello@swiftplumbing.com" - `<MapPin className="w-4 h-4 shrink-0 text-primary" />` + "Serving the greater metro area" --- ## Animations ``` Navbar: opacity 0 → 1, duration 0.4s Hero label + pulse: opacity 0, y 12 → 0, delay 0.1s, duration 0.45s Hero H1 (per line): delay 0.2s + index*0.1, duration 0.6s, blur 8px → 0 Hero sub: delay 0.5s, duration 0.5s Hero CTAs: delay 0.65s, y 16 → 0, opacity 0 → 1 Hero trust badges: stagger delay 0.8s + index*0.08 Hero image: scale 1.06 → 1.0, duration 1.4s ease easeOut on load Services cards: whileInView, stagger 0.08s, y 32 → 0, opacity 0 → 1 Stats: whileInView once → trigger counters + y 20 → 0, stagger 0.1s Process steps: whileInView, stagger 0.12s, y 28 → 0 Testimonials: whileInView, stagger 0.09s, y 24 → 0 Emergency CTA block: scale 0.97 → 1, opacity 0 → 1, duration 0.65s ``` --- ## Responsive ``` Navbar: full links desktop → logo + phone button only mobile Hero H1: clamp(2.8rem, 6vw, 5.2rem) auto-scales Hero CTAs: flex-row desktop → flex-col w-full max-w-[320px] mx-auto mobile Hero trust badges: flex-wrap, 2-per-row mobile Services: 3-col → 2-col tablet → 1-col mobile Stats: 4-col → 2×2 grid mobile, remove right borders mobile Process: 3-col → 1-col mobile, dashed line hidden mobile Testimonials: 3-col → 1-col mobile Emergency H2: clamp(2.4rem, 6vw, 4.5rem) auto-scales Footer: 3-col → stacked 1-col mobile ``` --- ## Full Copy | Element | Copy | |---|---| | Brand | SWIFT Plumbing | | Nav links | Services · About · Areas · Contact | | Nav CTA | (555) 012-3456 | | Hero label | Available 24/7 · Emergency Service | | Hero H1 | Fast, Reliable / Plumbing You / Can Count On. | | Hero sub | Licensed and insured plumbers serving the greater metro area. We show up on time, fix it right, and leave your home cleaner than we found it. | | Hero CTA primary | Call Now — (555) 012-3456 | | Hero CTA secondary | Get a Free Quote | | Trust badges | Licensed & Insured · 60-Min Response · 5-Star Rated · 15 Years Experience | | Services label | What We Fix | | Services H2 | Every plumbing problem. One call. | | Stats | 2400+ Jobs · 15 yrs In Business · 60 min Response · 98% Satisfaction | | Process label | Our Process | | Process H2 | Fixed in three simple steps. | | Testimonials H2 | Don't take our word for it. | | Emergency label | 24/7 Emergency Line | | Emergency H2 | Plumbing emergency? We'll be there. | | Emergency sub | No call-out fees after hours. Licensed plumbers available around the clock for urgent repairs. | | Emergency CTA | Call (555) 012-3456 Now | | Emergency fine print | Average on-site arrival: 60 minutes or less | | Footer tagline | Licensed and insured plumbers serving the greater metro area since 2010. | | Footer © | © 2025 SWIFT Plumbing | --- ## Key Dependencies ```json { "motion": "^12.x", "lucide-react": "^0.4xx" } ```

The generated results may vary

FAQ

What AI tools does this plumber website prompt work with?

The prompt works with Bolt, Lovable, v0, and Cursor. Paste the full prompt into any of these tools and it will generate a complete plumber website starting point based on the design and copy spec included.

Is this a finished website or a starting point?

It's a starting point. The prompt generates a solid visual foundation — layout, color system, button sizing, animations, and placeholder copy — but you'll need to swap in your real phone number, service area, business name, and photos before going live. If you need a fully finished, production-ready website, check out our Framer templates instead.

Do I need to provide my own images?

No. Every image in the prompt is described with a photography brief so the AI tool generates appropriate visuals automatically — a plumber at work, close-up pipe photography, and so on. You can swap them for your own photos at any time.

Can I change the color scheme from dark to light?

Yes — the design system is built with CSS custom properties. Changing the background, foreground, and accent color is a small set of edits at the top of the file. The layout and component structure works with any color combination.

Plumber Website Prompt full preview — complete plumber website design with dark theme, electric blue accent, hero section, services grid, stats counters, process steps, testimonials, and emergency CTA

FAQ

What AI tools does this plumber website prompt work with?

The prompt works with Bolt, Lovable, v0, and Cursor. Paste the full prompt into any of these tools and it will generate a complete plumber website starting point based on the design and copy spec included.

Is this a finished website or a starting point?

It's a starting point. The prompt generates a solid visual foundation — layout, color system, button sizing, animations, and placeholder copy — but you'll need to swap in your real phone number, service area, business name, and photos before going live. If you need a fully finished, production-ready website, check out our Framer templates instead.

Do I need to provide my own images?

No. Every image in the prompt is described with a photography brief so the AI tool generates appropriate visuals automatically — a plumber at work, close-up pipe photography, and so on. You can swap them for your own photos at any time.

Can I change the color scheme from dark to light?

Yes — the design system is built with CSS custom properties. Changing the background, foreground, and accent color is a small set of edits at the top of the file. The layout and component structure works with any color combination.

Get new AI website prompts every week — straight to your inbox.

Every Friday we drop a fresh batch of AI website prompts and tips to help you build better websites faster.

Join 1,000+ AI enthusiasts

liquid metallic gradient

Get new AI website prompts every week — straight to your inbox.

Every Friday we drop a fresh batch of AI website prompts and tips to help you build better websites faster.

Join 1,000+ AI enthusiasts

liquid metallic gradient

Get new AI website prompts every week — straight to your inbox.

Every Friday we drop a fresh batch of AI website prompts and tips to help you build better websites faster.

Join 1,000+ AI enthusiasts