Benchside
A family-first hockey management platform. One schedule, one ledger, one household — even when that household spans two homes and three clubs.
The app is in build — expect rough edges and demo data.
The problem
Every tool was built for the club.
A season runs on a team app, a league portal, an e-transfer thread, a shared calendar somebody's mother maintains, and a group chat where the actual decisions happen. Each one is organised around a team. None of them knows that the two kids in the photo are siblings.
So the family does the integration by hand — every week, at 6am, in a parking lot.
The idea
Make the household the primary object.
Teams, providers, associations, merchants and grandparents all attach to it. Two commitments in the data model make that work, and neither can be retrofitted later.
A household spans clubs
Association membership sits on the player, not the account. A family with one child in Hockey Calgary and one in the Super League sees each child's own vocabulary, divisions and calendar — inside one view of the week.
An event's organiser is polymorphic
A team, a household or a third-party provider can all own an event. That is what lets conflict detection catch a privately booked dryland session colliding with a club practice — the case every team app misses, because it never sees the other one.
Scope
Five things a team app won't do.
Third-party providers
Skills coaches, power skating, dryland, goalie and physio sign up as providers, get hired by a team or a household, and schedule into the same calendar and ledger as everything else. Credentials — background check, safe sport — gate booking with minors.
Merchant fundraising
A restaurant agrees a revenue share and scannable codes attribute the spend. A team code fills the team pot; an athlete code credits that family's own fee balance. Monthly remittance settles into the ledger, so the fundraiser and the invoice are the same system.
External ice availability
Nightly ingest of open ice by rink and price, attributed to the source with a deep link out to book. Benchside surfaces the slot; the rink still takes the booking. No scraping a checkout, no sitting between a family and their money.
Guest access
Grandparents sign up against an invite pass and get a read-only schedule they can subscribe to in their own calendar. Games are on by default, practices are opt-in per team, and redaction happens server-side rather than by hiding a field in the UI.
Registration & split billing
An association invites a guardian for a named player, the guardian signs the club's agreements, and the invoice issues. Signatures freeze against a document version and its body hash. A split across two households is a proposal the other side accepts — never a setting one parent can flip.
Player development
Photo, birth year, height, team and level. Progression tracked across seasons so a fifteen-year-old can see the whole arc, with stats entered by hand rather than scraped from a league site that changes every August.
Build
Where it stands.
- Domain model and conflict detection green against seeded data
- Fourteen routes building clean, including the sign-in and registration flow
- Swappable data adapter — in-memory today, Postgres behind the same interface
- Deploying to Google Cloud Run as a standalone image
Design partner conversations are open now for the 2026–27 season. What I want from a first club is not a cheque — it is a season's worth of complaints.
Specification
- Framework
- Next.js 15, App Router
- Language
- TypeScript, strict
- Styling
- Tailwind v4 over Open Ice tokens
- Typeface
- Manrope
- Data
- Typed domain model, swappable repository
- Platform
- Mobile-first web, installable PWA
- Hosting
- Google Cloud Run
- Ice data
- CatchCorner, attributed with a link back
Design
Open Ice
A rink at 6am is a phone-in-a-glove environment. The design system answers that with generous whitespace, large calm type, soft edges and one accent used sparingly, so that when colour appears it means something.
Club colour enters through a single token. A crest upload rethemes the whole product without moving an edge, and contrast is checked first — a pale kit gets darkened rather than rejected. The same system runs this website, which is why the two look related.
Early access
Want it for your club?
Tell me which association you are in and how many kids you are juggling. I read every one of these myself.