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