# uDonate MVP Sprint
## General
An agreement was made between uDonate and Raid Guild to create an MVP. The goal of this document is to get clarity on what that MVP contains, to identify its key-features.
## Elevator Pitch:
uDonate is an app for crowd-funding through crypto-currency, also allowing influencers to endorse projects.
## Participants
- Elliot (PM, Raid Guild)
- Sam (Back end development, Raid Guild)
- Saimano (Front & Back end development, Raid Guild)
- Bennisan (Design lead/front-end, Raid Guild)
- Tae (Account, Raid Guild)
- Tom (Perfect Pool)
- Mike (Perfect Pool)
- Patrick (Perfect Pool)
## MVP Steps
- Defining objectives through user stories (Needs, Wants, Desires)
- Determining MVP tech stack
- Designing UI
## User stories:
As a **user**, I want to be able to:
- connect to the app through web3
- make my account a full account by giving e-mail/Twitter handle
- verify my e-mail account to become a cause-creator
- full out an application to become an influencer
- see a influencers page w:
- social media accounts
- favorite categories
- images
- narrative
- display name
- favorite cause
- endorsed cause
- the total amount that their causes raised
- number of donations their causes have received
- number of causes created
- number of donors influenced
- active causes created by this influencers
- what cause this influencer has donated to
- their total influence (= technical concept!)
- ability to share via URL
As a **cause-creator**, I want to be able to:
- go through the cause-creation-wizard to create a cause
- set a name for my cause
- see the ENS-domain that will be created from set name
- select a category out of the list
- set an images (up to six) and one of these coverimages
- set a narrative
- set the type of fund-raising (see tech concepts)
- set the fund/no-refund option when the choose fund-raising type 1
- set the goal (w types 1 & 2)
- set the date (w types 1 & 3)
- accepts terms and conditions
- visit my created cause
- promote my cause through social media via direct link
- promote my cause through e-mails send by the app
- gives updates on my cause
- pause my cause
- end my cause, followed by an automatic update
As a **donor**, I want to be able to:
- look at all the causes
- search the causes by keywords
- filter the causes by category
- filter the causes by location
- filter the causes by date
- sort the search-results by most relevant/alphabetical/most recent/most viewed
- see which causes are endorsed by my favorite influencer
- visit a cause shared w me by direct link
- find all the details on this cause:
- who created the cause
- what the goal is
- what the enddate is
- what the narrative is
- how much is raised
- what was setup in the wizard...
- select an amount
- accept the terms of use
- choose to be anonymous/provide details:
- displayname (optional)
- e-mail (optional)
- subscribe to updates w this e-mail
- note to the fundraiser (optional)
- connect to Metamask to do the donation-tx
- see that my tx was succesful
- see (in case not anonymous) my contribution at the cause
- read the updates on this cause
- receive the updates on this cause via e-mail
- see who has endorsed this cause
- see if a cause is paused
As a **influencer**, I want to be able to:
- see my influencer-role and -status indicated at my account
- fill out my influencer-page to complete my influencer-status
- edit my influencer profile
- upload max 6 images of myself
- choose a profile pic from these 6 images
- choose a displayname
- choose a narative
- choose description
- endorse 6 causes (from button on cause-page)
- pick my favorite cause out of these 6 endorsed causes
- unendorse a cause after 24hrs
- unpick favorite cause after 24hrs
- create influencer-pool out of caused created/endorsed by me, w an indication of how to split between these
- search the causes for ones to endorse
- choose categories that interest me, so the system can suggest
- see how my endorsed causes are doing:
- end date (if there is any)
- number of donors
- goal
- money reaches
- see data on my influence: in the total pages views of my public pages (social media links tracking?)
- make connection to my other social media accounts
As a **site-admin**, I want to be able to:
- control which causes are hightlighted
- accept or reject influencer-application
- hide a certain cause from the uDonate-frontend
- pause a cause
- end a cause
- put a cause in a refund state (if the refund option is present in the contract)
- search causes
- download all of the causes in a CVS-type format
- see logs on actions (pause/end/...) taken on the cause
- see all donations with their (donor-)
- edit the terms and agreements of both creating and donating, becoming an influencer
- communicate to site-users
- created notes only for fellow admins to see about influence-application (?)
- created notes only for fellow admins to see about causes and actions taken on causes by adminv(?)
## Tech questions:
To be discussed:
- user management: strictly MM or e-mail+passw
- role management: which roles/what should they be able to do:
- user - donor
- organization admin - not mvp
- influencer
- org teams - not mvp
- system admin
- cause creator
- cause management:
- create/edit/view
- Cause creation wizard
- preview
- cause w/o organisation?
- organisation management:
- create/edit/view
- onboarding an organisation
- ens integration
- wizard
- CMS needed for content-pages (help/faq editing)?
## Tech concepts:
- full-membership (cfr. PerfectPool)
- authentication for cause-creators through e-mail
- authentication for influencers through e-mail + social (Twitter/facebook)
- Influencers through invite, not just through the door
- For MVP: cause-creators + influencers, leave organisations out for MVP
- 3 types of fundraising:
- 1. set amount of money by set date (has separate contract)
- 2. set amount of money, no time-restriction (general contract)
- 3. as much money as possible by set-date (general contract)
- causes resolve to an ens name
- present database options
- ipfs/arweave option
- likely need some central db
- need for an email servie provider
- share cause templates
- email verification
- cause updates
- epns
- look into this for cause updates
- site admin communication tools
- admin to user communication - open ended
- notes added to cause and influencer entities
- 3rd party tool options?
- pool donation
- db holds the cause id and influencer % reccomendation
- user donates XX dai, can change % allocation, single function call with amount, causes + % allocation
- how are we supporting a influencer score
- identify metrics we have and what we need to add in
- look into page view tracking
- how to track inbound traffic from an influencer tweet/post/ect...
- track donations from the influencer page for thier score and to display those stats on the influencer page
#### Permission management
Everyone is a user/donor
- web3 connect
##### Roles
Cause creator
- email verification
Influencer
- invites for mvp
- social media verification (manual for mvp?)
System Admin
- email verification
- manually set for mvp
#### Terms management
- version management
- track which users have signed which terms and version
## To check by uDonate:
- contracts > Raid Guild
- communication solutions by other Ben
- check uniswap integration w Upstate
- check w Upstate about currency to set goal in