# uDonate - Roadmap ## Overview uDonate is a dApp for crowdfunding causes. As a basic user, you can donate directly to a cause or donate through your favorite Influencer. Once verified, this user can also create their own cause, and apply to become an Influencer. As an Influencer, you can endorse your favorite causes and organize a donation pool for users to donate through. Due to the complexity and scale of the project, development will be split into multiple phases. The first phase (the MVP phase) will focus on core functionality, while later phases will focus on adding more complexity, such as Influencer scores and expanded communication features for admins and cause creators. The goal of this project is to complete a MVP of uDonate, fulfilling all Phase 1 user stories and deliverables as mentioned below. ## Recommended Phase 1 scope of work → list as features The recommended MVP implementation of the uDonate product is focused on developing a fully-featured web application on a solid technical platform that can be expanded in future phases. The following feature set will allow early adopters to participate in the uDonate system as donators, cause creators, and influencers, plus provide the uDonate team tools to manage the product and gain insight into product direction. Feature and technical detail will be outlined in the the User Stories and Spec sections. This is an overview of the feature set. 1. User Management * Web3 authentication * Email verification 2. Cause Management * Cause creation/editing * Cause dashboard * Cause discovery/basic search * Basic social share functionality 5. Donations * Single cause donation * Influencer pool donation 3. Influencer Management * Influencer application/creation/editing * Influencer profile page * Cause endorsement * Cause pool creation/editing * Influencer discovery/basic search * Basic influencer score (based purely on donations) * Basic social share functionality 6. Site Admin Controls * Airtable used for admin tool * Cause/influencer controls * Activity monitoring/reporting in Airtable 7. Static Help & FAQ Pages ## Roadmap for future phases → list as features Future phases will focus on adding more complexity to Influencer scores, plus expanding the types of communication for admins and cause creators. More Phase 2 features will be explored and scoped after the MVP launch. 1. More complex data capture and reporting * Tracking social media interaction for influencer scores * Top donors through influencers * Influencer score iteration to include more data points * calculated from donation data for MVP 2. In-app communication features * Admin communication to influencers/cause creators * Cause creator communication to donors (cause updates) 3. Admin tooling outside of Airtable * If needed we will explore a more custom admin experience 5. ENS link creation ## UI Design Figma Document: https://www.figma.com/proto/jlLAxVChcVisJY1DlRTqxP/uDonate-v2?node-id=1%3A24&scaling=min-zoom&page-id=0%3A1 #### Instructions (for best viewing experiences): - Set to width to 'Width - Scale down to fit width' - Blue-ish squares indicate hotspots and guide you through the flows (the current flow is: connect with metamask -> verify -> apply for influencer -> start a cause) ## Phase 1 User stories ```gherkin= Feature: Unauthenticated User Scenarios Scenario: User looks into other influencer's public page Given all circumstances Then the user can view an influencer's page with the following information * Influencer display name * short status * narrative or description * images * social media accounts * favorite cause, categories, & Endorsed causes * total amount / number of donations his/her favorite cause received * causes created by the Influencer himself/herself * causes the Influencer has donated to * his/her influence score Scenario: User looks into other cause pages Given all circumstances Then the user can view all cause pages (with only read-only functionality) ``` ```gherkin= Feature: Authenticated User Scenarios Scenario: User does a web3 login When the user wants to interact with the app as a maiden step Then the user can unlock more features by email/social media verification And the user can apply to become an influencer And the user can look into different causes made And the user can look into an influencer's page Scenario: User verifies his/her account Given the user is already web3 logged in Then the user provides his/her email, twitter, etc for verification. * User has the option to edit basic profile page from this point on Scenario: User applies to become an influencer Given the user is already web3 logged in And the user has a verified full account Then the user fills out a form with required fields such as * 1 profile picture * 1 cover photo * email * short status * display name * narrative Then the user waits for an admin to update his/her influencer status ``` ```gherkin= Feature: Cause Creator Scenarios Background: Given the cause creator is web3 logged in And has his/her account verified Given the cause creator is not web3 logged in Then cause creator is redirected to email verification page Scenario: Cause creator creates a cause Then the cause creator goes through a wizard to create his/her cause requiring * a name for the cause * a narrative * a set of images out of one to be the cover image * a category to be chosen * a cause type (plus refundable option if applicable) * a date * him/her to accept terms & conditions Then the cause creator waits for his/her cause to be approved. Scenario: Editing a cause after it's created Given the cause is approved by an admin Then the cause creator can * visit his/her cause page * put in a request to admin to pause or end his/her cause ``` ```gherkin= Feature: Donor Scenarios Scenario: Donor looks around causes Given the donor is web3 logged in Then the donor can * find all the available causes listed * filter causes by category, location and date * search causes by keywords * sort results by recently created/most donations * find a cause endorsed by an influencer * find a cause that's shared through a direct link * find details about a particular cause such as * the cause creator * cause goal * cause narrative * cause enddate * raised funds, etc * influencer for this cause if any * cause status (paused/ended) * his contribution to the cause if not anonymous Scenario: Donor donates to a cause Given the donor is web3 logged in Then the donor selects an amount to donate Then the donor provides his/her info such as * display name * email * note to the cause creator Then the donor accepts terms & conditions Then the donor goes through making the web3 deposit transaction Then the donor receives his/her tx hash/status Scenario: Donor donates to an influencer Given the donor is web3 logged in Then the donor can set an amount to donate Then the donor can view influencer's recommended donation pool ratio Then the donor can set their own donation pool allocation Then the donor can donate ``` ```gherkin= Feature: Influencer Scenarios Background: Given the influencer is web3 connected And has his influencer form submitted and accepted Scenario: Influencer visits his/her profile page Given the background is all true Then the influencer can * view his public page * his/her profile info * view his influence stats * choose to edit his/her profile page Scenario: Influencer edits his/her profile page Given the background is all true Then the influencer can edit his profile data including * his/her profile pic * choose / unchoose categories of interest * updating social profiles * 6 endorsed causes * Favorite cause out of those 6 causes Scenario: Influencer edits donation pool Given the background is all true Then the influencer can edit his/her cause pool * provides a default ratio of how donations will get disbursed when a user donates to them ``` ```gherkin= Feature: Site Admin Scenario Scenario: Administrator contract functionalities (no UI, done through etherscan) Given the person is an approved site admin Then the admin can * Hide / pause / end / highlight a cause * put a cause in refund state Scenario: Administrator Airtable functionalities Given the person is an approved site admin Then the admin can * update hide / pause / end / highlight cause status * update cause refund status * can accept / reject influencer applications * download data of all causes * view donation data of causes * view logs if any (only transaction logs) * edit terms and conditions ``` ## Spec ### Frontend * Email Verification: **Magic.Link** * Email Relay Service: **Sendgrid** * Frontend Hosting: **Vercel** * File (image) Hosting: **Infura IPFS** * Frontend Framework: `React` & `Typescript` * Frontend `styled-components` / `SASS` / `CSS` * Web3 Lib: `Ethers.js` -> this should be built to work on any EVM compatible chains ### Backend * Server: Express * Server Hosting: **Heroku** * DB: **MongoDB** & **Airtable** * Auth: JWT | Server | Database | Auth | | -------- | -------- | -------- | | Express | MongoDB, Airtable | JWT, Magic.Link / SendGrid | ### Data Fields ![](https://i.imgur.com/I0OR8V6.png) ### Database Flowchart ![](https://i.imgur.com/J1CO0yB.png) ### UX Flow ![](https://i.imgur.com/9iJ4MxM.png) ## Recommended Team 1. Frontend Dev 2. Backend Dev 3. Design Lead 4. Project Manager 5. Account Manager ## Phase 1 Cost Estimate | Sub-Phases | Cost | Time estimate | | -------- | -------- | -------- | | Development | 77,000 DAI | 55 days | | Testing & QA | 4,200 DAI | 2-3 days | | **Total Estimate** | 81,200 DAI | |