Upvote started as a practical problem at SMAN 1 Taman: running a school election with paper ballots means an afternoon of counting, a room full of witnesses, and a result nobody can independently check. It was used to run the Duta election at Gelar Seni Siswa (GSS) 2022, and works the same way for a student council vote.
What it had to get right
An election app has one job it cannot fail at: every eligible person votes exactly once, and nobody can vote twice. Everything else is secondary.
Each participant receives a single-use token, checked and burned at submission
Candidate profiles and photos are managed from an admin panel before voting opens
Results tally live, so the winner is known the moment voting closes
Stack
Laravel with MySQL and a Bootstrap frontend. Nothing exotic: this was an early project, and the interesting work was in the data model and the vote-integrity rules rather than the framework.
Looking back
The code is dated and the UI shows its age, but it did the thing it was built for on the day it mattered. Source is on GitHub.