baycountydiscgolf.com

The club's 2026 platform. A public site with this season's calendar and four courses, a supporter portal with a handicap computed from league rounds, and the league-night tools behind it. One repository, built and run solo.

ShippedNext.jsPrismaSupabaseExpoVercelPDGA data
baycountydiscgolf.com

Bay County Disc Golf Inc. is a volunteer-run 501(c)(3). Sponsors check the website before they write a check, the city checks it before it returns a call, and a newcomer checks it to find out where and when we play. For five years that was a static site I built in 2021 and maintained alone. This replaced it in 2026.

It’s one platform in one repository. The public side is what a newcomer needs: this season’s calendar with every event’s purpose and charity named, the four courses with the marks drawn for each, media coverage, the brand kit, and how to get in touch. Behind supporter login is the Bay County Handicap System, which took the longest to get right. It’s a handicap per layout at Majette (Red, Blue, White, and Alt) plus an overall, each with a confidence tier that says how many official rounds the number rests on. It’s computed from sanctioned league rounds pulled from the PDGA, and a supporter can see the rounds behind their number. Around that sit the director tools, including league-night check-in with live card assignment, so whoever’s running the night isn’t shuffling paper on a tee pad.

The events page counts the club’s history from every PDGA league and tournament round we’ve run: 74 sanctioned events since 2020, 7,254 player-rounds, 763 people who’ve played at least one, and 9,141 miles of fairway. It recounts every hour, so new rounds show up without a deploy. Lose a disc and there’s a form on the site and a /lost command in our Discord, and both land in the Squid Squad’s private channel. A supporter app with the handicap boards and calculator, the league schedule, and the lost-disc form is built, behind the same approval as the portal, and isn’t in the stores yet. For the Mash 2026 work day, a live course-setup checklist at mashworkday.baycountydiscgolf.com let volunteers tap jobs off hole by hole, and everyone’s phone caught up within a few seconds.

Every page is laid out at phone width first, because the person using it is usually on a tee pad in Florida sun with one hand free. And nothing is hand-maintained that can be computed. Event history, handicaps, and standings all come from data, so I’m no longer the only person who can keep the site current.

It consolidated three earlier projects (a roster and PDGA-sync leaderboard, the old site and portal, and a card-assignment tool) into a Next.js app, an Expo app for members, a Prisma schema on Supabase, and two TypeScript engines for handicaps and card assignment, each with its own tests. Its sibling, monsteratmajette.com, is the course’s own site, reached by QR code from the tee signs.