← Back to Bluebird Plumbing

Behind the build

A plumbing template with a copper spine

How this page was designed to win a homeowner's trust in ten seconds — and how the one decorative flourish, a scroll-drawn copper pipe, was built without ever getting in the way.

The concept

Bluebird Plumbing Co. is a fictional Pasadena plumber built as a conversion-first service template: the entire design answers one homeowner question — "can I trust these people, and how do I call them?" — before doing anything clever.

Aesthetically it borrows from warm American trade-brand design: deep navy for competence, copper for the literal material of the craft, soft off-white paper instead of stark white, and a slab serif (Zilla Slab) that feels like hand-painted truck lettering. The one indulgence is the signature moment: a thin copper pipe that runs down the left gutter of the page, drawing itself as you scroll, with a small valve wheel that "turns on" at each section — plumbing as the page's spine.

The techniques

1 · The scroll-drawn pipe (SVG stroke-dashoffset)

On page load, JavaScript measures where each section heading sits, then builds one long SVG <path> down the left gutter — mostly vertical, with a small S-shaped elbow jogging left or right just above each heading, like real pipework routing around a stud. The classic draw-on-scroll trick does the rest:

// dash the path to its own length, then reveal by scroll progress
pathLen = pathEl.getTotalLength();
pathEl.style.strokeDasharray  = pathLen;
pathEl.style.strokeDashoffset = pathLen * (1 - progress);

Progress is measured against a "reading line" 60% down the viewport, so the pipe tip always sits just below what you're reading. A faded ghost of the full path shows the route ahead.

2 · Valve joints that light up

At each heading anchor the script drops a tiny SVG valve wheel — a circle with four spokes. When the reading line passes a joint, a class toggles: the core fills copper, the spokes darken, and the whole group pops to 1.18× with a springy cubic-bezier(.34,1.56,.64,1). It reads as "this section is now flowing."

3 · Clarity guards on the flourish

The pipe only renders at viewports ≥1240px, where there is a genuine empty gutter beside the 1120px content column — it is never allowed to overlap text. It's pointer-events:none, rebuilt on resize, and under prefers-reduced-motion it renders fully drawn and static instead of animating. On phones it simply doesn't exist; the phone number does.

4 · Art-directed stock photos

Both photos are treated with the palette rather than dropped in raw. The hero sits under a diagonal navy scrim (linear-gradient(100deg, rgba(12,33,56,.94) → transparent)) so white text passes AA on top of it; the copper-pipe detail shot gets a multiplied navy gradient and a caption placing it in a real neighborhood ("Copper repipe, Bungalow Heaven").

5 · Choreographed entrances

One IntersectionObserver watches every .rise element and adds a class that releases a 22px translate + fade, with per-card transition-delay stagger (0 / 60 / 120ms). No animation library, about 10 lines of JS, and it unobserves each element after firing so nothing re-runs.

6 · The quote form's "thanks" state

The form validates the three required fields client-side, then swaps itself for a confirmation panel with a spring-pop checkmark and — crucially — a phone CTA repeated inside the thank-you, for the person whose problem can't wait 15 minutes. Note for production: this is a static template, so the submit is a client-side state only; in a real deployment the form posts to the client's CRM or lead-routing webhook.

Why this converts

  • The phone number appears seven times, and twice above the fold — header pill, hero button, the emergency service card, sticky mobile bar, quote panel, thank-you state, footer. A homeowner never has to hunt for it; every appearance is a live tel: link.
  • Trust is stacked directly under the headline, not buried on an About page: star rating with a review count, license number, years in business. Those three cues answer "are these people legitimate?" in one glance, before the visitor scrolls at all.
  • The sticky mobile call bar keeps "Call Now" and "Free Quote" under the thumb for the entire scroll on phones — where most emergency plumbing searches happen — and the body gets bottom padding so the bar never covers content.
  • The 3-step process section sells certainty, not services. Plumbing dread is mostly fear of the unknown invoice; "you call → written quote → fixed and tidied" plus the free-if-we-exceed-it promise converts anxiety into a phone call.
  • The form asks for four things, one optional. Every extra field costs leads; name, phone, and a service dropdown are all a dispatcher needs to call back. The reply promise ("within 15 minutes, usually Rosa") makes submitting feel like starting a conversation, not entering a database.
  • Locality is everywhere: a 626 number, a Fair Oaks Ave address, neighborhood names in the reviews (Bungalow Heaven, Madison Heights), and a service-area map. "They're from here" is the single strongest trust cue a local service business has.

How it was made

This site was hand-coded — plain HTML, CSS, and JavaScript, written line by line. No page builders, no drag-and-drop themes, no off-the-shelf frameworks. Every detail, from the scroll-drawn copper pipe to the sticky call bar, was engineered specifically to move a homeowner toward one action: picking up the phone.

That's the Tiny Mammoth approach to a client website: a template built to convert, not just to look good.