Founder · Matt's Volleyball League · Since 2023
Matt's Volleyball League / VolleyballEngine
Skills exercised
The custom-built side of the volleyball league: scheduling engine, tournament software, public marketing site, and payout calculator. Off-the-shelf Teamlinkt handles registration and rosters; VolleyballEngine handles everything Teamlinkt doesn't.
VolleyballEngine
Next.js + TypeScript platform I built and deployed to Cloudflare Workers via OpenNext. Multiple jobs:
- League schedule generator Takes registration data and produces season schedules imported into Teamlinkt.
- Tournament software Bracket generation and management for in-league playoffs and standalone tournaments.
- Mix-and-match scoring In-league playoff format pairing players across teams.
- Revenue split / payout calculator Computes each contractor's percentage of season revenue for 1099 payouts.
Tested end to end with Playwright. Unit tests with Vitest. Staging and production environments with automated deploys.
Tournament algorithms
Custom shuffle-format and balanced-team draft generation as standalone TypeScript modules. The constraint is balancing skill across teams while keeping the experience fun for casual players and competitive for serious ones.
mattsvolleyball.com
Astro-based marketing and information site. Taps Teamlinkt's APIs to surface live schedules, standings, and league data on the public site with no manual sync step. Serverless API endpoints (Cloudflare Pages Functions) read TeamLinkt live with 5-minute edge caching, so registration CTAs and season labels update client-side without a rebuild. Same Cloudflare-native deployment pipeline as VolleyballEngine.
GroupMe automation
Five scheduled GitHub Actions workflows run the league's daily communications over the GroupMe API: schedule posts (Playwright screenshots the live schedule page in CI and uploads it to GroupMe's image service), weekly per-division results and standings recaps, morning-after missing-score nudges, registration spots-remaining alerts with stateless dedupe, RSVP calendar events with afternoon headcount checks, and NWS-forecast weather warnings. Every workflow has dry-run, test, and date-override dispatch inputs, and everything shakes down against a dedicated test group before posting to real players.
Off-the-shelf vs build
Teamlinkt as the core league-operations platform: registration, rosters, captain communications, player-facing app. VolleyballEngine for the work Teamlinkt doesn't do well: schedule generation, tournament brackets, revenue splits. The vendor-versus-build call gets re-evaluated each season.
What it demonstrates
- Full-stack web development: Next.js, TypeScript, React, Astro, Cloudflare Workers, Playwright, Vitest.
- API integration: Teamlinkt API consumption for dynamic content, the GroupMe API end to end (bots, user tokens, topics, images, calendar events, members), the NWS forecast API, and serverless endpoints on Cloudflare Pages Functions.
- CI/CD and scheduled automation: five GitHub Actions cron workflows running league communications hands-off, with dry-run/test dispatch inputs and a test-group shakedown pattern.
- Systems design: tournament logic, scheduling, mix-and-match scoring, stateless dedupe for idempotent automated posting.
- Vendor judgment: chose Teamlinkt over rolling my own league-ops platform; reserved custom build for the parts where off-the-shelf options fell short.