baycountydiscgolf.com
The non-profit's 2026 platform: a public site with this season's calendar and four courses, a supporter portal with a handicap computed from rounds you actually played, and the league-night tools behind it — one repository, built and run solo.

Bay County Disc Golf Inc. is a volunteer-run 501(c)(3), and a volunteer organisation’s website is its proof of existence: sponsors check it 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 people play. For five years that page was a static site I built in 2021 and maintained alone. This is what replaced it in 2026.
It is one platform in one repository. The public side is the site 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. Behind supporter access is the part that took the longest to get right: the Bay County Handicap System, 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 is computed from sanctioned league rounds pulled from the PDGA, never from a rating somebody else assigns you, and a supporter can see the rounds behind their number. Around that sit the director tools, league-night check-in with live card assignment, so the person running the night is not shuffling paper on a tee pad.
Two design decisions carry the whole thing. The first is that every page is laid out at phone width first, because the real usage scene is a player on a tee pad in Florida sun with one hand free. The second is that nothing is hand-maintained that can be computed: the event history, the handicaps, and the standings all come from data, so the president is no longer the only person who can keep the site true.
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 pure TypeScript engines for handicaps and card assignment, each with its own test suite. Its sibling, monsteratmajette.com, is the course’s own site, reached by QR code from the tee signs.

The reason the platform exists. A handicap per layout with a confidence tier, computed from sanctioned league rounds, never from a rating someone else hands you.

Every event carries its history. The league rounds behind those chips are what feed the handicap engine.

Four courses across the county. Majette is home; the others are ours to look after too.

Most visitors arrive from a phone at a course, so every page is laid out at 360px first.

What it replaced. The 2021 static site had no login, handicaps in a hand-edited HTML file, and a copyright line that stopped updating.