The PatientGamers Discord server has, over the years, become my favorite space to discuss games. I love the ethos, you may only ever play games older than 1 year. Paired with a Steam Deck, I’ve been breezing through my backlog.
Beyond just the discussions, one of the highlights of the server is our monthly Game of the Month (GOTM) vote. It’s a ton of fun, and everyone gets really invested in it. I recently took over maintaining the project’s site and decided to re-write the PHP codebase into something I’m more familiar with.
How does it work?
- Every month, the jury selects a theme. These can be anything from “Speed” to games released in “2001/2002”.
- Users then nominate games related to the theme that they would like to play this month, with an optional pitch.
- The jury selects up to 5 (but sometimes 7) games to be voted on that fit the criteria.
- Users vote for the games they would like to play in a Ranked Choice Voting format, with a Borda count tie-breaker.

Why rewrite?
I’ve been participating in the GOTM for years now. During this time, it was all managed by @sneakingj and I would make the occasional PR to the PHP site whenever something needed to be changed. After nearly 7 years of running GOTM, @sneakingj decided to take a step back and I volunteered to take over maintaining the site.
While the original PHP site worked well, maintaining and iterating on it wasn’t as efficient for me. I now place immense value on prototyping speed and the ability to quickly make changes that I need. My tooling and familiarity with a stack that I’m familiar with gives me infinite flexibility. Unfortunately, I did not get the time to build that up with PHP.
My ideal web-dev stack
- Bun: Used it on a whim and I’ve never looked back since. It’s so fast and I’m a big fan of the in-built modules.
- Remix: I’ve been using it for a while now and I love the approach to routing and how it acts as a BFF.
- TailwindCSS: It just feels so much nicer than raw CSS.
- MySQL: It’s solid, it’s boring, it works.
I would’ve considered using SQLite but the previous PHP site’s MySQL database was so well maintained I never saw the need to shift.
Rebirth
One of my favourite things about working with React is the ecosystem. Just off of the top of my head:
- Need solid drag-and-drop functionality for voting? Use
@hello-pangea/dnd
- Charts? Use
chartjs-chart-sankey
- Prebuilt UIs or icons? I love using
@headlessui/react
and@heroicons/react
With this stack and a little help from Copilot, I’m able to make changes and whip up brand new features in minutes. I thrive on the dopamine hit of shipping features fast, and this setup lets me do exactly that.

Here are a few screenshots of the site:
- Nominations page:

- Results page:

You can visit the site here.
Plans
For now, I’m happy with how the site is running, but there are a few small tweaks I’d love to explore. I think we’re quite happy with how it is right now. A few things I might change:
- Find a way to show node labels on the Sankey diagram
- A fun ✨stats✨ page
As always, everything is open to feedback and pull requests. You can find the source code on GitHub.
This was an incredibly fun project to work on for a community that I really enjoy and cherish.