# PerfectPool: 1 day design sprint
Based on PerfectPool Consultation, an agreement was made between PerfectPool and Raid Guild to do a one day design sprint.
### Goal
The aim of this 1 day sprint is to have a full spec for the project, including well-defined milestones, and more precise quote, as well as a really good shared understanding between Raid Guild and Perfect Pool.
### PerfectPool 'Elevator Pitch'
A mechanism to run single elimination tournament on the blockchain, including entry-submission, scoring and payout.
### Participants
- Spencer (PM, Raid Guild)
- Tae (Account manager, Raid Guild)
- Bennisan (Design lead, Raid Guild)
- Tom (Perfect Pool)
- Mike (Perfect Pool)
- Patrick (Perfect Pool)
## Steps
- Defining objectives through user stories ([Needs, Wants, Desires](https://trello.com/b/zNETjrbp/perfectpool)?)
- Designing user flows (overview + each flow)
- Determine components to be built
## 1. User stories
As a **new user**, I want to be able to:
- create a new bracket for a tournament
- connect w metamask to the site
- submit an e-mail to my account to make it a full account
- save a bracket for a tournament to my account and name it
- search for public pools to submit a bracket
- find a pool I was invited to
- submit my bracket to a pool for a fee (Test Ether)
- read up on past events of tournament that has ended
- see detailed events of a match of an ongoing tournament
- read more about the app/company
- read how the app works
- see the progress of the tournament in bracket format
- see the details of a specific tournament
As an active **pool participant** I want to be able to:
- see the results of all pool participants as a leaderboard
- see the results of all pool participants in bracket format
- see a specific bracket entry fared against real tournament results
- have an overview of every submission I did with a link to that pool
- see the details of each of my submissions fared against real tournament results
- see all of my saved brackets fared against real tournament results
- promote various facts/actions on various social media platforms in different forms
As a **user w full account**, I want to be able to:
- deploy a smart contract to Ropsten to create a pool for a specific tournament
- see the details of a specific tournament in an entrypoint way
- name my pool
- mark my pool private or public
- issue invites via email with a template describing PerfectPool and a link to the pool page
- accept the results of a tournament as to payout the winners
- promote your pool on various social media platforms
As a **site admin**, I want to be able to:
- create and name the tournament
- identify the 64 team tournament participants
- enter brief descriptions for each tournament participant, and assign a relative strength factor to each participant
- identify the scoring format
- set a tournament start and end date
- determine which smart contract (pool) applies to a tournament
- commit the tournament results per match on chain
- make the tournament results per match visible in the app
- post narrative descriptions of each game result
- communicate with all users via e-mailaddress
## 2. User flows
Overview/Sitemap:
https://whimsical.com/RrUiHASEHAZ6WxFEgoEagc
Userflows:
https://whimsical.com/QUQ8r5Hd1EFbAAcwQExoYw
- USER SUBMITS TO PUBLIC POOL
- USER SUBMITS TO PRIVATE POOL
- USER CREATES A NEW POOL
## 3. Components list
Re-usable components:
- **a. User-module:** login + account creation (Soft=minimal/full)
- **b. Tournament-module:**
- input from site-admin
- different presentation forms: can visualize results and faring of both pool and specific entry
- **c. Bracket-config-module**
Views/pages:
- **Home page:** b. + public pool list + link to a. + tournament-events-module
- **Pool detail page:** b. + pool details(1) + link to a. + c.
- **Account page:** account details (dep. soft/full account) + link to c.
- **Create pool page:** create-pool-config + instructions
- **Historic/upcoming tournaments page:** information on past and upcoming (+c.)
- **Site admin page:** create-tournament-module, manage-tournament-module (input results + events)
- **"About Perfect Pool" page**
Back-end connections:
- Web3
- Site admin module (Airtable)
- Db (user data, tournament data)
(1)Pool details also determine 1. if you are owner of this pool; 2. if you are participant of this pool
## 4. Tech concepts
#### Soft/full account:
In the app, we speak of **soft accounts and full accounts**. This mechanic incentives users to submit their e-mail, while still allowing those who don't want to submit an e-mail address the basic functionalities of the app by connecting with web3.
A **soft account** is when a user connects w web3 to the app. This results in limited account-functionalities in the app. With a soft account, you can:
- Save 1 bracket
- Edit bracket until it is submitted (after a submission, bracket can not be edited)
- Submit bracket to 1 pool (only 1 to incentivise full account)
- See your submit on ‘Account page’
A **full account** is when a user chooses to submit an e-mail address, linking it to his metamask-connection. By doing so, a user has full account-functionalities. This action can be done at any point in time in the app. With a full account, you can:
- Save multiple brackets
- Edit bracket and ‘save’ (to overwrite) or ‘save as…’ (to duplicate)
- Submit to multiple pools
- See all your submits on ‘Account page’ (UI: focus on active!)
- See all your bracket configs on ‘Account page’
- Create/manage your own pool
- Receive communication/event-updates… from pool-creator via e-mail
- Receive communication/event-updates… from PerfectPool via e-mail
(In tone of voice it might be good to speak of an account only when it's a full one, and of a connection when it is a soft one)