P2P Voting dApp – USD $3000

By November 12, 2020DApps
Click here to view original web page at gitcoin.co
Description

Main tasks

1. Deploy a P2P mobile app (iOS and Android) with the following features

  • Users are able to create these types of poll questions: (a) Multiple choice answers (b) Yes/No answers (binary)
  • Users are able to vote on questions that are open
  • Users are able to change their votes for questions that are open and mutable
  • Users are able to view the results of questions that are closed or viewable

2. Deploy a server process that supports the entire voting ecosystem. The server owns the DB and is the only one that reads from or writes to the DB. The server should be easily deployable on a cloud server.

Requirements:

  • All data is stored exclusively in the Bluzelle database. No other data stores are used.
  • The server component is the nexus by which all reads and writes to the DB occur. Client only ever talk directly with the server.
  • All user private data (names, email, phone #) are encrypted by a private key owned by the server.
  • The server encrypts all private data before storing to the DB, and decrypts and sends plaintext to the clients, when requested.
  • All user accounts are tied to phone number to create login. You MUST have a phone number to create an account. Phone auth is used to create an account and to recover one. You are allowed to change your number if you are logged in already, and simply re-auth with the new phone number.
  • People login with their Bluzelle address exclusively. They provide their mnemonic, which is their password and proof of who they are. This mnemonic should be protected at all costs by the user. The mnemonic is only loaded locally -- never travels over the wire.
  • New users can create an account by simply logging in with their mnemonic or creating a new mnemonic. New users are optionally requested to provide their first name, last name, and email. All these are sent over SSL to the server (along with the phone number they authenticated with), and the server encrypts all this information before storing to the DB.
  • You can only vote once for a question.
  • Questions have several attributes:
    • Multiple Choice or Binary.
    • Question Text
    • Multiple Choice Options (each is text)
    • Draft/Open/Closed state. Questions that are open can still be voted on. Questions that are closed cannot be voted on anymore. Draft questions are not available yet and can be edited by the owner.
    • Mutable state. Questions that are mutable can be changed by a voter, as long as the question is mutable and still open.
    • Viewable state. Questions that are viewable can share their results even when still open. Otherwise, results are only viewable when closed.
    • Owner. The BNT user who created the question. Only they get to edit questions, set attribute values, etc.
    • Allowed users. The owner can leave it open, allowing any user to participate, or can select a whitelist of users that can participate. If a whitelist, the owner is expected to provide the BNT address of each participant they want to participate. They can add or remove users from a whitelist, as long as the question is open.

Main UI

1. A screen to see all the questions and results thereof, for any given user. They can view:

  • Only the questions and results they own. They can edit, add, delete, change settings, or close. New questions are draft until made "open". Once opened, the question's whitelist, options, and question text cannot be changed. While draft, anything can be changed. Once closed, cannot be re-opened. Filters to see questions that are draft vs open vs closed or all.
  • Only the questions they voted on. They can see also see results for questions that are viewable or closed. Checkbox to filter only questions they are whitelisted on. They can change answers on questions that are mutable. Filters for questions that are open vs closed and mutable vs not mutable and viewable vs not viewable.
  • Only the questions they can vote on but have not yet voted on and are still open. They can see also see results for questions that are viewable. Checkbox to filter only questions they are whitelisted on. They can vote on these questions if they want. Filters for questions that mutable vs not mutable and viewable vs not viewable.

2. The user can filter what they see in any screen by date, with the ability to view everything or only everything in a date range, or before a certain date, or after a certain date.

Deliverable:

Both iOS & Android App

Rewards

$3000 USD paid in BLZ Tokens

Resources:

Important Notes

  • Your submission will be a pull request.
  • Your submission WILL be judged significantly based on how well you use Bluzelle DB. It is a key value store, so please use it effectively using best practices including proper data normalization/de-normalization.
  • Update the README to reflect your submission including description, notes, and other pertinent details.
  • You can participate in any of Bluzelle bounty, or even multiple ones, as you desire. You can be an individual or a team -- it is up to you.
  • The code you submit will be under the MIT license, with you being credited as the author. When you submit this code, you agree to give all publishing and intellectual rights of the video freely over to the community via the terms of the MIT license.
  • Ensure the code is written by you or your team. It is imperative that you own the rights to the code and are writing code that can be fully licensed under MIT.
  • Please submit your code to Github with the proper MIT license file included in it, to be considered. If your submission includes a front end and back end, put these into separate FOLDERS and include them both in the same pull request with your submission.
  • Be sure your submission is in a ready and demo-able state. We will not evaluate incomplete projects nor will code alone be an acceptable submission. Include all necessary details so we can try out your app.
  • Record a screencast showing us how your submission works. Include a link to your video in the README.
  • The Bluzelle team will be solely responsible for choosing the winners, and if warranted, multiple winners are possible for each bounty.
  • The Bluzelle team will make the final decision, and reserves the right to not award a bounty for a challenge if no acceptable submissions are made.
  • Once you have made your pull request, submit your work and include information on the link to your pull request.

Main tasks

1. Deploy a P2P mobile app (iOS and Android) with the following features Users are able to create these types of poll questions: (a) Multiple […]

Leave a Reply

All Today's Crypto News In One Place