
Billingshurst LTC box league platform
A live web app for Billingshurst Tennis Club: member directory, box leagues, score entry, and club admin, built after off-the-shelf tools could not keep up.
Members
160+
Billingshurst Tennis Club needed one place for members to see standings, enter scores, and for managers to run box leagues without spreadsheets and email chains. I built a production web app they use today, with room to grow.

The problem
Box leagues only work if standings stay current and everyone can find their matches. Before this build, the club tried existing platforms, and they were not enough. Those tools locked the club into someone else’s workflow, left gaps in how seasons and membership actually run, and did not give enough freedom to stay feasible long term.
- Previous platforms lacked the control managers needed over boxes, seasons, and day-to-day ops.
- Rigid roadmaps meant the club could not shape the experience around how Billingshurst actually plays.
- Spreadsheets and email filled the gaps: workable for a season, not a lasting foundation.
- Players still needed a simple “my league” view: who to play, what to enter, where they stand.
- Member admin (search, roles, and a directory that scales past a few dozen players) had to live in one place.
The solution
A role-aware web app designed around tennis club ops: managers get dashboards and admin; players get their box, fixtures, and score entry. Competitions cover Mens and Ladies Singles/Doubles plus Mixed Doubles, with league selection in the sidebar so the same shell serves every draw, without fighting a third-party product’s limits.

What shipped
League standings and seasons
Each box shows played/won/lost, sets, net games, and points, with medal ranks and clear promotion/relegation banding. Season date ranges sit on every card so the current round is obvious.
Member directory
Managers can search 160+ registered members by name or email, see totals for admins and blocked accounts, and open player cards with league activity at a glance.

Player “My League” flow
Players see their box standing, remaining fixtures, and a straightforward path to add scores. Match results land back into the shared standings so the club is not waiting on someone to update a sheet.

League operations
Managers can edit standings, manage players in boxes, and apply start/end dates across leagues in one pass: the operational layer you need when a season rolls over.

Club administration
An admin panel covers club colours, logo, competition statistics, scoring/points configuration, and competition types. That is the branding surface other clubs use when they ship the same product under their own identity.



Outcomes
- Live membership and league data in one app instead of scattered lists and rigid third-party tools.
- Managers and players share the same source of truth for standings and scores.
- Club branding and competition setup are admin-driven, not hardcoded.
- The platform stays under active development with regular updates as club needs evolve.
Technical notes
SPA front end with authenticated manager and member roles, hosted on Netlify. The UI is tablet-friendly for score entry after matches and desktop-friendly for season admin. Auth, roles, and league state are first-class: the parts that usually break a “quick spreadsheet replacement.”
Next step
Need something similar? Send a short brief and I will come back with a fixed quote.
Start your project