Workers Auto Approve
uPort Email Verification
To bridge the gap between Web 2 & Web 3, we can issue uPort credentials that attest to ownership of a particular email address. This feature is the first piece of a larger application that will help bootstrap the ecosystem of decentralized identity data.
The project here is pretty simple. We'll need a front-end for the user to submit their email address and a server to send a selective disclosure request via email, then sign and send an attestation. We're starting with an awesome email verification library (https://github.com/mi-xu/uport-verify-email) by @mi-xu that handles most of the server-side functionality necessary
### User Journey
- User loads the site and is prompted for their email address
- User enters email address, taps 'continue', lands on a success screen
- User receives an email with a QR code
- User scans the QR code from email, shares device ID and uPort ID with the app
- User is pushed an attestation from the app that states they own the provided email address.
### Backend Requirements / Functionality
1. Receive an email address from frontend, and send a [selective disclosure QR](https://github.com/uport-project/specs/blob/develop/messages/sharereq.md) to received email. This is handled by the email verification library [here](https://github.com/mi-xu/uport-verify-email/blob/master/src/index.js#L96 ). The callback for the selective disclosure request can be something like `https://api.uport.me/verify`.
2. Receive callback from selective disclosure, parse verified email address, create & sign attestation saying MNID owns that email, and push attestation to user's device. This is also handled by the library [here](https://github.com/mi-xu/uport-verify-email/blob/master/src/index.js#L121).
A couple notes:
- the lib contains a `createUser()` function to create a record in a database, but this is unnecessary here âÂ it was built for another use-case
- our team is a big fan of serverless infrastructure which may make sense for this project too
- you will need to create a uPort App Identity using the [app-manager](http://appmanager.uport.me/). you should use the application you register for testing, but in the final code please use an `ENV` variable for the `SimpleSigner` object used to declare your instance of the app.
### Frontend Requirements
1. Splash screen with a form field that validates on email address (perhaps with a simple Redux form) and sends valid emails to the backend
2. "Success" screen after the user submits an email address
3. Responsiveness for any browser size
4. Consistency with the below designs & branding guidelines
- typeface should be [Nunito Sans](https://fonts.google.com/specimen/Nunito+Sans)
- purple is `#5c50ca`
- actual UI mocks are included in the issue on Github
Setup your profile
Tell us a little about you:
No results found for
Type to search skills..
Required [[totalcharacter]] / 240
Are you currently looking for work?
[[ option.string ]]
Setup your profile
Our tools are based on the principles of earn (💰), learn (📖), and meet (💬).
Select the ones you are interested in. You can change it later in your settings.
I'm also an organization manager looking for a great community.
Enable your organization profile
Gitcoin products can help grow community around your brand. Create your tribe, events, and incentivize your community with bounties. Announce new and upcoming events using townsquare. Find top-quality hackers and fund them to work with you on a grant.
These are the organizations you own. If you don't see your organization here please be sure that information is public on your GitHub profile. Gitcoin will sync this information for you.
Select the products you are interested in:
Out of the box you will receive Tribes Lite for your organization. Please provide us with a contact email: