Skip to content
Open to work

A-103 Swan Padel Club

A concept site for a padel club that does not exist.

Concept

Swan Padel Club is not a real business. It is a fictional club invented so the site could be designed and built end to end, the way a real one would be, without a client brief to work from. Every name, price and league table on it is made up.

The Swan Padel Club concept site's coaching page, under a banner saying the club is made up
Client
Self-initiated concept
Year
2026
Sheet
A-103, 3 of 5
Status
Concept, no real client
Role
Sole developer and designer
Stack
Laravel, Inertia.js, React, TypeScript, Tailwind CSS, Motion

Summary

A complete, working site for a padel club that does not exist, built to show what a local sports club could have rather than to describe one that already does. Six pages, forms with real server-side validation, and a full local SEO layer. It says it is a concept on every page.

The brief

Most local sports clubs are let down by the same thing: a site that lists the facilities and says nothing about what turning up actually feels like. Courts are a commodity. The reason people join is the Wednesday regulars.

So the concept was built around that — accessibility first, community second, and the competitive side deliberately fourth, where somebody who has never held a racket won't trip over it.

Construction notes

What I built, keyed 1 to 5.

  1. Built the brand outward from the name: palette, type pairing and the swan mark
  2. Wrote the front end in React and TypeScript on Inertia, against a Laravel back end
  3. Built the booking and enquiry forms on Form Request validation, behind one notifier interface
  4. Found and fixed a client-render fault serving every page the same title and no description
  5. Audited every page against the Web Interface Guidelines at desktop and mobile widths

Outcome

A finished six-page concept site with working forms. It is a concept, not the site of a real club.

Worth noting

  • The SEO layer was fixing a real fault, not decoration

    The site renders on the client, so nothing an Inertia page added to the document head ever reached a crawler. All six pages were serving an identical title and no description at all. That got fixed at the source — the metadata is held in PHP and rendered server-side, with the same values shared to React so navigation stays in step.

  • One abstraction, because it earned its place

    Both forms hand off to a single notifier interface. The test for whether that was worth building was simple: two real implementations and more than one call site. On the demo it logs; a live club would swap the binding for a mailer and change nothing else.

  • Made-up details stop where they could do harm

    The structured data carries the locality and opening hours, but no phone number and no street address. Schema gets scraped into directories, and an invented number that turns out to belong to a real household is not a risk worth taking for a demonstration.

More drawings

The Swan Padel Club concept site on a phone screen

Hiring, or want something like this?

Ask me how I built it, or tell me what you're working on, or email oscarfreeman@live.co.uk.