3 ms·
Show HN: Bite Ballot – Vote on where to eat
This is a web app for quickly settling on where to eat as a group. (Feel free to critique the landing page.)
Unique features compared to other polling apps:
- No sign-up step.
- Enhanced Approval Voting: veto/ok/prefer. You may vote for multiple restaurant options.
- Real-time ballot updates so new candidates can be seen and voted on immediately.
- Ties are always broken randomly.
- Implemented with HTMx + hyperscript + jinja, enabling SSR and HATEOAS.
If you want to test the functionality by yourself, you can start a ballot, then copy the join link and open it in a different browser (or device). Each browser will be recognized as a separate user.
But give it a try in an actual group if you're able to. I find it nice and satisfying to use. You can just trust that the ballot result has picked the best place to eat for your group. Let me know if you feel the same way.
Aside from designing and implementing a new voting system, the other part I'm most proud of is the join-ballot flow. The intersection of possible states creates a plethora of cases that need to be handled differently:
- The joiner may not have a user (name) -> ask for name.
- The joiner may already be in an active ballot -> confirm abandoning the current ballot to join the new one.
- The joiner may be in a completed ballot -> let them join without confirmation.
- The joiner may be trying to join the ballot they're already in -> tell them, and let them return to their ballot.
- The joiner may have clicked their own join link as a way to get back to the ballot -> warn them to check if it has opened in a different browser.
- The ballot they're trying to join may be completely abandoned or already finished -> tell them, then let them create a new ballot or return to their current ballot if they have one.
Just handling all these different cases was hard enough, but I think I was able to simplify the code down enough to keep it maintainable.
If I can get enough users and monetize this, maybe I can afford to add more features like maps, yelp stars, or menus by paying for Google Maps and/or Yelp Fusion API access. In the meantime, the next big feature would be persistent user accounts/logins so that a single user can sign in on different browsers/devices and have their restaurants and restaurant info (like links to Yelp pages) saved and synced -- while still supporting the original minimal sign-up flow (just name). But let me know if you can think of other good features to add.
- stanislavb 2y agoSeems useful for office workers. And, yes, if you could have a saved list of people and restaurants, the whole process of organizing new ballots/polls could be much faster.
- domokato 2y agoAt least the browser will autocomplete restaurants you have entered previously. That's pretty good for now. Thanks for checking it out