About
In this website you're presented with two randomly selected songs and you must vote for the one you like better. As you vote, songs win and lose Elo, which acts as a measure of song quality.
You can access a personal ranking, based only on your votes, as well a global ranking.
Development
My main goal with this programming exercise was to achieve a good degree of "polish". I've made similar projects before but with this one I took extra care with the details. For example:
- I made sure the website was responsive (scaled well to mobile devices).
- The website has a consistent design language throughout, which has been through many iterations.
- I made sure colors had appropriate constrast.
The website in written in Python, with the use of the Django web framework. The pages are server-side rendered through Django templates. It uses the Django ORM with a SQLite backend.
The Django Admin page has proven to be incredibly useful and convenient, and is currently the way to add songs to the song pool.
Future goals
Here are some things that I want to add to the website:
- Take greater care with accessibility.
- Server side checking that forms were not tampered with. Forms have a CSRF token, but it is still possible to fake votes by changing the IDs of which songs were presented to you.
- A system for suggesting new songs to be added.
- Clearer criteria for which songs should be in the website.
- An option for indicating you don't know a song, which removes it from your song pool.
- Keyboard based voting