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