---
# System prepended metadata

title: uDonate - Roadmap

---

# 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    |     |
