gitcoinco / skunkworks

experimental laboratory
64 stars 35 forks source link

Quadratic Voting Hackathon Leaderboard Tool #185

Open owocki opened 3 years ago

owocki commented 3 years ago

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 commented 3 years ago

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

on the create event page

on the voting page:

enter your voting code page

misc/admin

marketing

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 commented 3 years ago

⚡️ 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 commented 3 years ago

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

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

Enter voting code page

^ 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.

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

Misc/admin

Marketing

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 commented 3 years ago

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

owocki commented 3 years ago

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 commented 3 years ago

thanks man!! pumped

owocki commented 3 years ago

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 commented 3 years ago

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 commented 3 years ago

Updated issue thread:

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 commented 3 years ago

@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 commented 3 years ago

@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 commented 3 years ago

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 commented 3 years ago

Option for voters to add option

owocki commented 3 years ago

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.