Case study
Playmate
Sports Team & Event Management
Role
Scope
Stack
Live
What I built.
- 01
Built the whole product as the only developer, from screen design to the server and database.
- 02
Players and coaches sign up, build profiles and create teams with a logo, a banner and a lineup on the pitch.
- 03
One link or code brings a player into a team, and one form invites the squad to a match, pickup game, network game or training session.
- 04
Every invite is tracked as pending, accepted or rejected, and upcoming events show on a calendar.
- 05
Players find each other and send friend requests, with every invitation in one notifications panel.
- 06
Google Places search for event venues, in a dark, mobile-friendly interface that feels like a sports app.
- 01
React 18, TypeScript and Vite SPA with a custom Tailwind design system and Headless UI; an Express and Mongoose API with 35 endpoints over 8 collections.
- 02
An event wizard driven by a typed union of four event types, each with its own form and confirmation view.
- 03
bcrypt passwords, JWT sessions, and a single-use reset token signed with the secret plus the current password hash, expiring after 5 minutes.
- 04
Team roles and random invite codes with duplicate-membership checks; directional friendship records with a pending-to-accepted lifecycle.
- 05
Attendance modelled as a join collection with invite states; Nodemailer email over Gmail OAuth2.
- 06
A monorepo that installs and runs the frontend and API with one command, with Vercel SPA rewrites.