aboutsummaryrefslogtreecommitdiff

vote

because paper ballots are so 2019

Imagine this. You're a somehow still functioning student organization of computer nerds. You've been using paper ballots to vote for the last 40 years. But then, disaster strikes! Global ~~ligma~~ COVID takes over, and if you so much look at a slip of paper, The Virus will take you. Enter vote, a 🚀 blazingly fast 🚀... Wait. This is Go, not Rust. It can't be blazingly fast. Uhh... Enter vote, a reasonably fast voting app with less memory safety than if it was written in Rust. But hey, gotta Pokemon Go to the polls somehow, right? Right...? This is why I'm a software engineer and not a comedian.

Anyways, now we can vote online. It's cool, I guess? We have things such as: - Server-side rendering. That's right, this site (should) (mostly) work without JavaScript. - Server Sent Events for real-time vote results - ~~Limited~~ voting options. It's now just as good as Google Forms, but a lot less safe! That's what you get when a bored college student does this in their free time

Configuration

You'll need to set up these values in your environment. Ask an RTP for OIDC credentials. A docker-compose file is provided for convenience. Otherwise, I trust you to figure it out!

VOTE_HOST=http://localhost:8080
VOTE_JWT_SECRET=
VOTE_MONGODB_URI=
VOTE_OIDC_ID=vote
VOTE_OIDC_SECRET=
VOTE_STATE=

To-Dos

  • [x] Custom vote options
  • [x] Write-in votes
  • [x] Ranked choice voting
  • [x] Show options that got no votes
  • [ ] Allow results to be hidden until a vote is closed
  • [ ] Don't let the user fuck it up
  • [ ] Show eboard polls with a higher priority