Standfast

Build guide · Site 230 · Industry Demos III

How Standfast
was made

A conversion-focused landing page for a fictional small-group strength club in East Victoria Park — dark iron lit by chalk, priced honestly, with a Training Week Builder that turns a browser into a warm lead.

Concept

Standfast Strength Club sells coached small-group strength training to locals who are done with big-box gyms: desk workers who want to deadlift properly, parents getting strong again, over-50s told to “do some resistance training” with no idea where to start. The page has one job — book a free intro session — and every section funnels there. The design refuses the industry’s neon-transformation clichés: it’s premium the way a well-kept barbell is premium.

Palette — argued from the platform

Iron #191B1E

The ground: black rubber flooring and steel. Everything sits on it.

Chalk #EAE7DF

Body-ink on iron — the dust on every good bar. ~13.9:1 on the ground.

Plate blue #4E7FD0

The 20 kg competition plate. LINE/MARK + CTA fills only — at ~4.3:1 it never sets body text; small blue text uses a derived ink #8FB1E8 (~7.8:1).

Plate yellow #D9B23A

The 15 kg plate. One accent moment per section: eyebrows, focus rings, ticks (~8.4:1, safe at label sizes).

The ink/line split is the load-bearing decision on a dark ground: chalk carries every paragraph, the plate colours carry lines, marks and the two calibrated plates in the builder — exactly the trade’s own colour system, so the palette is literally the equipment’s.

Type

Get strong, properly.

Big Shoulders (display) — condensed athletic verticality, set tall, tight and uppercase. It reads like lane signage and gym-wall lettering without cosplaying a varsity tee. Weight 800 for the hero, 700 for section heads, 600 for eyebrows.

Coached every rep, capped at eight.

Albert Sans (body/UI) — a plain-spoken geometric that stays legible at 14–16px on the dark ground, with enough warmth that the honesty copy (“we’re coaches, not dietitians”) sounds human.

Signature — the Training Week Builder

Goal chips (get strong / build your engine / move well again) and a 2–4 days stepper fill a procedural SVG week grid. Each chosen day gets a loaded-bar session row: a chalk bar shaft spans the week, and on the session’s day the plates slide onto the sleeve — rounded-rect plates in calibration colours (blue 20 kg, yellow 15 kg, chalk-ring 10 kg), a collar, and a chalk puff when they land. The grid is built with createElementNS at render time; plate entrances are CSS transforms with per-plate stagger delays, so reduced-motion simply renders them seated. The weekly price updates live — $59 / $79 / $99, the same floors as the memberships grid, asserted in QA so the page never argues with itself — and “Book this week” pre-fills the intro form with goal + days, turning the toy into a warmer lead. The resting state is already mid-demonstration (get strong · 3 days · $79) so a static thumbnail reads instantly. Live state is exposed at window.__gym.

Techniques

Conversion decisions

Local SEO we’d implement for the real business

This demo page ships only WebPage schema naming it a demonstration — fictional review markup in a real index is dishonest. For a real club we’d ship:

<script type="application/ld+json">
{
  "@context": "https://schema.org",
  "@type": "ExerciseGym",
  "name": "Standfast Strength Club",
  "url": "https://standfaststrength.com.au",
  "telephone": "+61 8 XXXX XXXX",
  "priceRange": "$59–$99 per week",
  "address": {
    "@type": "PostalAddress",
    "addressLocality": "East Victoria Park",
    "addressRegion": "WA",
    "postalCode": "6101",
    "addressCountry": "AU"
  },
  "geo": { "@type": "GeoCoordinates", "latitude": -31.99, "longitude": 115.90 },
  "openingHoursSpecification": [
    { "@type": "OpeningHoursSpecification",
      "dayOfWeek": ["Monday","Tuesday","Wednesday","Thursday","Friday"],
      "opens": "05:30", "closes": "19:30" },
    { "@type": "OpeningHoursSpecification",
      "dayOfWeek": "Saturday", "opens": "07:00", "closes": "10:00" }
  ],
  "aggregateRating": { "@type": "AggregateRating",
    "ratingValue": "4.9", "reviewCount": "87" },
  "review": [{ "@type": "Review",
    "author": { "@type": "Person", "name": "Real member name" },
    "reviewRating": { "@type": "Rating", "ratingValue": "5" },
    "reviewBody": "Pulled from the club's Google Business Profile feed." }]
}
</script>

Plus: Google Business Profile with the review feed synced to the page, suburb landing content for Vic Park / Carlisle / Kensington, and FAQPage markup on the real FAQ.

What would change for the real client

Iteration log

Pass 1 · Craft

The 375px screenshot was the ground truth this pass — three defects the DOM asserts sailed past:

Pass 2 · Depth

Pass 3 · Hardening

Standfast Strength Club is fictional. Prices ($59–$99/wk small-group, $199 Foundations, $95 1:1) are argued from the 2026 Perth small-group strength market; the phone number uses the collection’s reserved (08) 9000 0xxx pattern.