Arbour Hill Boxing Club has been in the same hall on Old School Lane in Dublin 7 since 1929. What it offers a family is plain, and the club sets all of it: bring a ten-year-old down on a Monday evening, the first session is free, then it is €5 a week for under-16s and €10 for 16 and 17-year-olds. All of it rests on a parent knowing when to turn up and when to come back.
Until the website redesign went live in August 2026, the club's own site could not answer the second half of that. It printed the training hours four separate times on one page, and they disagreed two against two. The schedule card near the top said Monday training ran 6:45 to 8:15 pm. A block further down, and the footer, said 8:30. All four were live when we found them, with nothing to tell a parent reading on a phone which pair to believe.

A quarter of an hour is not a rounding error
The distance between those two times is fifteen minutes. A business with a receptionist absorbs that. A volunteer club absorbs it as a parent outside a locked door, or a parent arriving in the last quarter of an hour of a session unsure whether they are late or early. And the page was saying in public that the club could not keep its own hours straight.
That is what a stock template costs. The old site was a Framer template on a free subdomain, arbourhillbc.framer.website: pastel gradient, rounded cards, a headline reading "Youth Amateur Boxing Club in Dublin For Ages 10-17", a "Made in Framer" badge in the corner, and no photograph of the club, the hall or a single member. A template is built to look presentable for any business at all. A club that has been in one room since 1929 is not any business at all, and the opening hours were where that showed.
The demo did the selling
The club came to us and asked whether we could design them a new site. We built a one-page
version, at no charge, and sent it over. They came back and asked for two more, picked one, and
then commissioned the paid rebuild.
That is the whole sales process, and it is deliberate. A proposal describes a website. A demo is
one, on a phone, with the club's own name at the top of it. The second is a great deal harder to
argue with, and it costs us a day.

First job: find out when the club is actually open
Two conflicting times meant the page could not be the source, so we went to the club's Google Business Profile, the listing that appears beside a search result. It carries Google's "Updated by this business" label, meaning the club set those hours rather than Google guessing, and it reads Monday and Wednesday 6:45 to 8:30 pm, Friday 5:45 to 7:30 pm (read from the profile in August 2026).
Every demo we had built until then carried the wrong pair of times, inherited from the old page. That check is now a step in the job rather than something we remember to do.
The hours on the new site live in one place in the code and print from there into the visible timetable, the structured data and the FAQ. Structured data is a set of hidden labels telling a search engine what things are: an address, a phone number, opening hours. The six FAQ questions are generated from the page's own FAQ markup, so the visible answer and the machine-readable one cannot drift apart.
The crest and the photographs
The club's hand-painted crest and nameboard reached us as artwork on a flat black background. Deleting every black pixel would have hollowed out the roundel in the middle, whose interior is genuinely black, so the black was flood-filled inward from the border of the image only: the background went, the artwork stayed whole.
The photographs are the club's own, uncropped where the client asked for that. The whole-club group shot is square, so the column is sized to the height of the screen, so a square window sits on a square file and crops nothing. That hero did not survive its first design review. The photograph now runs floor to ceiling and bleeds off the right edge with the type top-aligned, instead of two blocks vertically centred and politely clear of every edge, which is the habit that actually reads as dated.

Reviews that stay Google's
The club holds 4.6 out of 5 from 25 reviews on its Google Business Profile (read from the profile in August 2026). Three of them are on the new site, word for word and credited, in a block styled to look like Google's own.
We deliberately did not mark that 4.6 up as structured data. The rating is Google's, and Google's guidelines treat marking up someone else's reviews as your own star rating as a violation. The number is worth quoting. It is not worth risking the listing over.
A booking form that fails loudly
Enquiries go through a real form. It posts to a Cloudflare Pages Function, code that runs on the hosting network rather than in the visitor's browser, which hands the message to Resend, an email delivery service.
The function has no default recipient address, so a missing configuration returns an error (HTTP 503) and says so, instead of quietly accepting enquiries and delivering them nowhere. The form works with JavaScript switched off; JavaScript is the code that runs inside the visitor's own browser, which most modern forms depend on entirely. When a send fails, the page says so and prints the club's phone number, 087 925 4732.
The rest is housekeeping: a WebP version and the original behind every AVIF for older browsers, self-hosted fonts, ahbc.ie on Cloudflare over HTTPS, the club's email untouched.
The measurements
All figures come from Lighthouse, Google's free page-testing tool, run on its mobile profile with simulated throttling, median of three runs, old site against new.

Every reading, not just the four above:
| Measure | Old | New |
|---|---|---|
| Performance | 78 | 96 |
| SEO | 58 | 100 |
| Accessibility | 99 | 100 |
| Best practices | 100 | 100 |
| First Contentful Paint | 2,891ms | 995ms |
| Largest Contentful Paint | 4,705ms | 2,835ms |
| Speed Index | 2,891ms | 1,195ms |
| Total page weight | 1,270KiB | 293KiB |
First Contentful Paint is the moment the first text or picture appears: 2,891 ms to 995 ms on that run. Before, that was nearly three seconds of nothing on screen.
Largest Contentful Paint marks when the biggest element, usually the main photograph, has finished loading: 4,705 ms to 2,835 ms on the same runs. That is still measured in seconds rather than under one, and the reason is the full-height photograph in the hero. It is a trade we made on purpose: the club asked for the whole picture, uncropped.
Page weight went from 1,270 KiB to 293 KiB on the same runs. KiB means kibibytes, near enough kilobytes: the data a phone pulls down before anything is readable. Most of that saving is images: across the site's photographs, 3,487 KiB of JPEG and PNG became 1,138 KiB of AVIF, a format that stores the same picture in far fewer bytes. The banner alone went from 570 KiB to 36 KiB.
What this was really about
Most of the job was reading the club's own sources instead of trusting the page in front of us, then measuring the result rather than asserting it. A template cannot do that, because a template has never met the club.
The new site is at ahbc.ie, and training runs Monday and Wednesday 6:45 to 8:30 pm and Friday 5:45 to 7:30 pm (the club's Google Business Profile).
If your own site came out of a template, read it on a phone the way a stranger would and check its opening hours against your Google listing. That check is the first thing we do at webs.ie, before anyone proposes any work. We usually build the demo first.