About

CanCommit connects Canadian student-athletes with coaches at USports and CCAA institutions. Athletes build verified profiles, and coaches search for talent that fits their program.

The design problem worth solving was contact privacy. Coaches can search and filter freely, but an athlete's contact details stay hidden until both sides accept a connection. For anyone under 18, the request routes to a guardian instead.

Built as a freelance project between May 2024 and June 2025, where I was primary engineer across architecture, implementation and production deployment.

Website: CanCommit

Key Features

  • Role detection on sign-up. Passwordless magic-link auth assigns admin, coach or athlete from the email domain and an institution whitelist.
  • Verified athlete profiles. Sport, position, stats, academics, highlight reel and guardian details, all validated against a shared schema before publishing.
  • Scoped coach search. Filters cover position, province, graduation year, height, weight and academic average, and scope automatically to the coach's own sport.
  • Mutual-consent contact. The platform reveals details only after both sides accept, and routes requests for minors to a guardian.
  • Cursor-paginated results. Infinite scroll handles large athlete sets rather than offset paging.
  • Rate limiting by route class. Separate sliding-window limits cover public, authenticated and upload endpoints.

Tech Stack

  • TypeScript
  • Next.js 14
  • React
  • tRPC
  • React Query
  • Drizzle ORM
  • MySQL (PlanetScale)
  • NextAuth.js
  • Tailwind CSS
  • Radix UI
  • shadcn/ui
  • UploadThing
  • Upstash Redis
  • React Email
  • Nodemailer
  • Vercel

Screenshots