A scalable sports registration platform for Canadian Blind Hockey
The whole software estate for a national adaptive sport organisation — registration platform, payments, and the bilingual public site.
- 2024—
- Ongoing client
- Live
- Sole developer
The situation
Canadian Blind Hockey runs programs nationally, in two official languages, for participants whose visual classification determines what they are eligible for. Off-the-shelf registration software handles none of that well. It assumes sighted users filling in a form, it has nowhere to record a visual classification, it treats French as a plugin, and its accessibility story is a compliance badge rather than a design position. The organisation needed software that starts from how it actually operates.
What the work involved
- Built the registration platform on React and TypeScript with a Supabase Postgres backend — participant profiles covering personal, medical and hockey information, multi-step guided registration, digital waivers, equipment requests, and emergency contacts.
- Modelled the domain properly rather than bending a generic schema to fit: visual classification and visual condition are first-class fields, because eligibility and program placement depend on them, alongside skating experience, hockey position, and referral source.
- Integrated Stripe for payments, with saved payment methods, refunds, and a payout report for the staff who reconcile them.
- Built financial assistance codes into the pricing model — per-program codes with usage limits and price tiers — so cost is not the thing that decides who can play. Accessibility of the interface is only half the problem.
- Enforced row-level security in Postgres across profiles, participants, emergency contacts and registrations, so a participant's medical information is reachable by that participant and the staff who need it, and by nobody else. 29 migrations, with the policies documented rather than folklore.
- Held WCAG standards throughout and designed for screen readers from the first screen, across a bilingual English and French interface as a national Canadian organisation requires.
- Built the staff side: participant and program administration, registration oversight, payment management, and reporting — the parts that decide whether the organisation actually adopts the software.
- Took over the public website, replacing a legacy WordPress site on shared hosting with a static bilingual Astro build, and migrating the DNS for both domains.
- Wired the two together so staff publish impact stories and events from the admin dashboard they already sign into — content reaches the public site without anyone touching git, a CMS licence, or me.
Outcome
The organisation runs its registration, payments, and public presence on one stack that it owns, maintained as an ongoing engagement rather than handed over and abandoned.
Stack
React · TypeScript · Supabase · PostgreSQL · Stripe · Astro · WCAG · i18n
Have something like this?
Describe the problem and you will get an honest answer about whether I am the right person for it. The scoping call costs nothing.