Skip to content
This repository has been archived by the owner on Jan 26, 2023. It is now read-only.

Quadratic Voting Hackathon Leaderboard Tool #185

Open
owocki opened this issue Sep 22, 2020 · 14 comments
Open

Quadratic Voting Hackathon Leaderboard Tool #185

owocki opened this issue Sep 22, 2020 · 14 comments

Comments

@owocki
Copy link
Contributor

owocki commented Sep 22, 2020

This is a tool for Gitcoin to manage Hackathon submission via a Quadratic Voting Hackathon Tool.

QV => https://en.wikipedia.org/wiki/Quadratic_voting

The use case is for the Gitcoin team to distribute votes to a series of community members; and to get back a QV-powered ranked list of who is the community choice according to QV.

We will likely use this to figure out the community choice winner of a gitcoin hackathon (and i plan to pitch this to ETHDenver as a tool for voting for them )

It'll need to do the following

admin use case

  1. hosted at qv.gitcoin.co
  2. an admin can 'create a new vote', input title, a list of projects to vote for, a deadline date/time, and input a number of voters, and number of vote credits per voter.
  3. admin will receive a list of voting links back from the UI qv.gitcoin.co/vote/SECRET_1, qv.gitcoin.co/vote/SECRET_2, etc. the secrets should NOT be guessable
  4. the admin will then be taken to qv.gitcoin.co/campaign/x/slug_name where they can see a REAL TIME leaderboard of the results. the leaderboard will be ordered by 'votes' in descending order.

voter use case

  1. when a user goes to qv.gitcoin.co/vote/SECRET_X they can see the existing leaderboard, and (optionally) input their name, and most importantly: decide how to spend their voting credits
  2. when the user inputs their voting credit amount, the leaderboard will update in realtime (both on their browser, and everyone elses browser)
  3. there will be a countdown on the leaderboard which will tell the user how much longer they have to input their votes. after the timer is done; voting is locked.

landing page

  1. the landing page will have a list of campaigns, and list whether they are active or not. it will be ranked by creation date descending. it will also have a 'create campaign' link in the top right.

Please don't worry about the design to start. Keep it very minimal (maybe use bootstrap to start), we will eventually skin it with WTF is QF branding. [deck] + (https://docs.google.com/presentation/d/1fSLh0uBWiOTVIDwhzhcphNstQ01loESzme0N1HCWxZ4/edit#slide=id.g892493500a_0_775) site

@owocki
Copy link
Contributor Author

owocki commented Oct 4, 2020

Testing notes from https://quadratic-voting.vercel.app/ follow

AMAZING WORK! SO EXCITE FOR THIS, JUST SENT YOU SOME ETH FOR THE MVP. I WANNA LAUNCH THIS DURING THE QUADRATIC VOTING HACKATHON WE RUN WITH RXC THIS WEEK; CAN YOU CO-PRESNT IT TO ME THERE?

GRANULAR FEEDBACK BELOW

on the landing page

  • Can we change "Quadratic Voting" h1 to "QuadraticVote.co" and the desc to "An easy tool to host a quadratic vote."
  • below the "quadraic voting is.." paragraph, can we add a h2 "Host a Quadratic Voting Event Below!" with a h3- " It's Easy.."
  • can the app remember my events that i've created on this computer + give me an easy way to access them? (and make it have a yellow background - we should visually denote visual modules that are because of my own actions with YELLOW, so the user can see their impact boldly)
  • can we add a "follow us on twitter" section for the people who built this tool similar to the one that "WTF IS QF.com" used to have before we nuked it for the GitXChange hackathon link? (BTW can we re-add that to the WTFisQF page? And change the "GitxChange2: Quadratic Funding Hackathon - Learn More " to "GitxChange2: Quadratic Funding Hackathon - October 2020 - Learn More·" Sorry, I guess Justin and i were not on the same page + I didnt want that text removed.)

on the create event page

  • can we add an 'event name' and 'event descriptoin' in the 'create event' form?
  • can we make the default 100 votes? "5" is too small to make much of a difference betwen 1:1 voting an QV
  • Can we change "votable subjects" to be 'options'? (and all subsequent fields a la title, descriptoin, link, etc)?
  • (plus for the above, can you apply those changes to the voting page itself?)
  • i should not be able to create an event without two options on it.

on the voting page:

  • i should be able to input a name when i submit my votes
  • the app should auto-submit votes auto submit votes to give it a real time feel
  • each time i change the vote, it should give me a new updated estimate of my "Quadratic vote impact" (basically the sqroot of my vote).
  • if i have previously voted on this event, itd be nice if i could see some things about my votes (what i voted for, what its impact was, when i did it) (and make it yellow background - we should visually denote visual modules that are because of my own actions with YELLOW, so the user can see their impact boldly)

enter your voting code page

misc/admin

  • can we change the DNS to be quadraticvote.co ? i have the domain, tell me what to put as DNS entries
  • can u share the codebase for this with a README?

marketing

  • can we make a quick twitter bot that tweets that tweets new events + votes as they are posted? (maybe if this is too much work it can be a v2 item?)
  • can we add twitter unfurl cards to the main page + also the voting pages (screenshot of how it looks now https://bits.owocki.com/kpuwyGAO). copy follows

main page "
QuadraticVote.co - EZ QV Tool
Desc: An easy tool to host a quadratic vote - Built by Gitcoin
"

vote page:
"
{vote topic name}
desc: ENDS IN 2 HOURS;

{option 1 name} - {x_1}%
{option 2 name} - {x_2}%
{option 3 name} - {x_3}%
{option n name} - {x_n}%
"

for each you can use this as the unfurl image https://bits.owocki.com/yAulomzr

Final thots

I'm very excited for this + I think the RXC community is gonna eat it up!

@gitcoinbot
Copy link
Member

⚡️ A tip worth 7.00000 ETH (2457.08 USD @ $351.01/ETH) has been granted to @Anish-Agnihotri for this issue from @owocki. ⚡️

The sender had the following public comments:

amazing work!

Nice work @Anish-Agnihotri! Your tip has automatically been deposited in the ETH address we have on file.

@Anish-Agnihotri
Copy link

Anish-Agnihotri commented Oct 6, 2020

Sweet, thanks for the great feedback!

Working on all of these issues over the next few nights to push for completion near late-Wed/early-Thurs (giving us a good day to do bug fixes, cleanup, etc., before the call).

Running to-do list

Landing

  • Landing copy change
  • Remembering created events (saving) in local storage
  • Follow us on Twitter section in the footer.
  • Changes you wanted to the wtfisqf.com/qf.gitcoin.co site.

Note: We do actually still have the social links on the wtfisqf.com website (we haven't nuked them)—just moved them to the footer. I added a footer to this site too with the credits. Lmk if that's the best way to do it or if you think it should be more front-and-center.

Create event page

  • Add event name and description to form
  • Make default votes = 100
  • Change voteable subjects to be options
  • Apply options copy change to voting page itself
  • Prevent event creation without two options

Enter voting code page

  • Should be able to paste in URL or code and it should work.

^ This actually works right now, it's just not very fast and I need to work on showing a better loading/processing state that isn't borked. Will fix.

  • The app should auto-submit votes to give a real-time feel.

I can make this change but it would significantly increase overhead. Let me see how I can optimize it.

  • Quadratic vote impact
  • Previous vote statistics in yellow

Misc/admin

  • Changing DNS. Yep, please put either an A record to 76.76.21.21, OR change nameservers to ns1.vercel-dns.com and ns2.vercel-dns.com.
  • Can you share the codebase for this with a README? Yep, codebase is here. I've kept it simple (serverless, easy to redeploy) and everything is commented. Still need to write up a nicer README.

Marketing

  • Twitter bot that tweets new events + votes.
  • Twitter unfurl cards to home page
  • Twitter unfurl cards to voting pages.

I can make the Twitter bot pretty easily, but we're going to quickly hit Twitter tweet limits (especially with the new change where you want to have votes being updated on increment/decrement instead of when the Submit button is being hit). Thoughts?

^ For the twitter unfurl cards for voting pages, I was thinking of making them dynamic to the event title. So like the meta image would update to reflect the title of the event (since this is fairly easy to do since I have the code already and the site is server-side rendered).

Will keep this issue updated and ping you as I go.

@owocki
Copy link
Contributor Author

owocki commented Oct 6, 2020

just set the DNS to ns1.vercel-dns.com / ns2.vercel-dns.com

@owocki
Copy link
Contributor Author

owocki commented Oct 6, 2020

I can make the Twitter bot pretty easily, but we're going to quickly hit Twitter tweet limits (especially with the new change where you want to have votes being updated on increment/decrement instead of when the Submit button is being hit). Thoughts?

if we can just debounce them then i think thats fine. maybe 1 tweet/minute when there is an update to a vote?

Note: We do actually still have the social links on the wtfisqf.com website (we haven't nuked them)—just moved them to the footer. I added a footer to this site too with the credits. Lmk if that's the best way to do it or if you think it should be more front-and-center.

thx didnt see that! i prefer front + center for wtfisqf.com - its too hard to find given the large landing page. for quadraticvote.co i think its fine to be in the footer bc the landing page is so small

@owocki
Copy link
Contributor Author

owocki commented Oct 6, 2020

thanks man!! pumped

@owocki
Copy link
Contributor Author

owocki commented Oct 6, 2020

more feedback here; looks like RXC tweeted thsi this am

https://twitter.com/Spugpow/status/1313581518191616000

notably: vote credits are calculated wrong, according to this guy

@owocki
Copy link
Contributor Author

owocki commented Oct 8, 2020

nice work!!

qa/ feedback on tonights build (i tried to focus on the very simple launch stuff so i dont ride you too hard, but we can still launch this week);

  1. https://bits.owocki.com/GGurk88d <=== button still says 'create subject'; i think it should say 'create option'
  2. the event start/end dates on input are not respected; i set an event to start tomo + the created event starts now. also seems i can vote before the start date and after the end date
  3. can we get the twitter cards in? i think thats essential for marketing this
  4. can you set the root domain as quadraticvote.co instead of https://quadratic-voting.vercel.app ? i want to meme the domain name in the share URLS + this should be the canonical URL from now on

@Anish-Agnihotri
Copy link

Updated issue thread:

  • Fixing button text
  • Twitter cards. We now have both the static (image one) and dynamic (on details page, image two) cards working.
  • Root/canonical domain as quadraticvote.co
  • Working event/start date
  • Remembering created events in localStorage
  • Debounced twitter bot
  • Quadratic vote impact visualization on Voting pages (how do you want to show this? Should I show a chart like on the details page being updated as you select all of your votes, or did you have something better in mind?)

Pushing forward well for a finalized version tomorrow. Lmk any and all comments and I'll add them to the working list to knock out.

Image one
Image two

@owocki
Copy link
Contributor Author

owocki commented Oct 8, 2020

@Anish-Agnihotri can you add GA to the site?

<!-- Global site tag (gtag.js) - Google Analytics -->
<script async src="https://www.googletagmanager.com/gtag/js?id=UA-102304388-5"></script>
<script>
  window.dataLayer = window.dataLayer || [];
  function gtag(){dataLayer.push(arguments);}
  gtag('js', new Date());

  gtag('config', 'UA-102304388-5');
</script>

@owocki
Copy link
Contributor Author

owocki commented Oct 8, 2020

@Anish-Agnihotri

  1. can we add a toggle that stops peoiple from being able to negative vote when creating an event. we just tested this tool on the gitcoin livestream and someone gave out negative votes
    https://bits.owocki.com/Z4uyL0DR

  2. can we add a voter log on the main event page, so people can see who voted what?

  3. strech goal: can we show the vote count over time + how its changing as the votes come in

@owocki
Copy link
Contributor Author

owocki commented Oct 9, 2020

ok after using tnhis for a few days, i can say the biggest pain is distributing the voting links, i think it'd be powerful to give people the option when they create an event to create an 'auto vote link distributor' that just delegates anti-sybil validation to an OAUTH provider (gitcoin, twitter, github, slack, etcd). bc its a pain to have to DM everyone links

@owocki
Copy link
Contributor Author

owocki commented Oct 10, 2020

Option for voters to add option

@owocki
Copy link
Contributor Author

owocki commented Oct 19, 2020

another auth option: one thing that i think would be really important in a tokenized world would be to host a quadratic vote; where you can enter a token address, and holders of that token can vote according to the number of tokens they have.

Sign up for free to subscribe to this conversation on GitHub. Already have an account? Sign in.
Labels
None yet
Projects
None yet
Development

No branches or pull requests

3 participants