--- tags: v3, hub app, dragons, user stories --- # v3 Hub App User Stories References this doc: [Hub App Scaffolding and Planning (4/19/22)](/uy_yi6ohQEW5MUt24ikDNg) to create a starting point for the Hub App user stories ## User Stories **Note**: These are only considering Gnosis Chain support for Alpha ## Questions For Ven - How do we handle Wallet Connect on something that's not specifically scoped to a network - Should show DAOs in all networks - Connected to any *supported* network - Wallet Connect possibly being 2 components: - Wallet Connect w/ Sign in with Ethereum that would show an address - Wallet Connect button (for something like Summon) that requires a user to actually connect their wallet - For this initial version of the Hub App are we wanting to include proposal cards? - Goal is to get rough understanding of the features and then look at what Jord is doing with Summon to see when Jord is starting the Connect button, and if not next week then Hub team should work on it first - Empty state designs - Empty page with message to connect for now - Omit the proposal part of the page? - Profiles could be public w/o a wallet view? ## v3 Blacksmiths Coordination: - If we start next week on the Wallet Connect feature, and Jord is starting on the Summon Wallet Connect, should we focus on having the simplest connect that only gets the user's address and work on the other features first? ## Features for Hub App Alpha v0 ### Feature: Wallet Connect ```gherkin= Feature: Wallet Connect Background: Given the user has set up a wallet. Scenario: User has not connected their wallet to a supported chain. Given that I'm on the Hub App landing page And Wallet Connect button displays "Connect Wallet" as the Button text And the Profile Header is not displaying user profile data And the main content UI is not displaying the DAOs Table -- (need an empty state UI design) When I click on the "Connect Wallet" Button Then the UI displays data relevant to me ``` ```gherkin= Feature: Wallet Connect Scenario: User's wallet is connected to a chain other than supported chain. Given that I'm on the Hub App landing page And "Wallet Connect" Button displays "Connect Wallet" as the Button text When I click on the "Connect Wallet" Button, I should know that I'm on an unsupported network And the UI should indicate that I'm user is on an unsupported network Then I'm prompted to switch networks to a supported chain And the "Wallet Connect" Button displays my address/ENS as the text Then the UI displays DAO data relevant to me ``` ```gherkin= Feature: Wallet Connect Scenario: User's wallet is connected. Given that I'm on the Hub App landing page And I've connected my wallet to Gnosis Chain Then the "Wallet Connect" Button displays my address/ENS as the text Then the UI displays DAO data relevant to me And the DAO table would display relevant DAO info ``` ### Feature: User Profile ```gherkin= Feature: User Profile Scenario: User has set up a Ceramic Profile and is connected to the Hub with the same address. Given that I'm on the Hub App landing page And I've connected my wallet And I have set up a Ceramic Profile for my connected address Then the Header Profile UI displays my Basic Profile info (username, address, avatar, bio, Edit Profile link) ``` ```gherkin= Feature: User Profile Scenario: User has connected their wallet, has set up a Ceramic Profile, and is connected to the Hub with the same address but has NOT set up their ENS. Given that I'm on the Hub App landing page And I have a Ceramic Profile but not an ENS Then the Header Profile UI displays a truncated view of my Eth address ``` ```gherkin= Feature: User Profile Scenario: User has connected their wallet, hasn't set up a Ceramic Profile, but does have an ENS. Given that I'm on the Hub App landing page And I haven't set up my Ceramic Profile but I have an ENS Then the Header Profile UI displays the user's ENS but no Ceramic Profile data ``` ```gherkin= Feature: User Profile Scenario: User has connected their wallet, but has not set up a Ceramic profile with the connected address. Given that I'm on the Hub App landing page And I've connected my wallet And I haven't set up a Ceramic Profile for my connected address Then the Header Profile UI shows a CTA explaining DAOhaus leverages Ceramic and a "Setup Ceramic Profile" Button to take them to self.id ``` ```gherkin= Feature: User Profile Scenario: User has connected their wallet, have a Ceramic profile with the connected address, but haven't added their Basic Profile information. Given that I'm on the Hub App landing page And I've connected my wallet And I have a Ceramic Profile for my connected address but haven't added any Basic Profile information Then the Header Profile UI displays the fallback/placeholders for the Basic Profile schema fields ``` Basic Profile Fields and Fallbacks: - user name, emoji, avatar, background image, bio/description - look to the basic profile schema - every field is optional in the Basic Profile - Fallbacks (since Basic Profile fields are all optional): - avatar: blockie - username: truncated address - address: (no ens: address) (ens: ens) - show ENS regardless if they have an ENS - bio: blank space OR GPT-3 bio :D - emoji: blank - background image: app background image Additions to the Data Package/SDK: - `getUserData` - Tries to return Ceramic - Tries to return ENS ### Feature: DAOs Table #### DAOs Table Alpha v0 Features: - No totals, filter, and search in Alpha v0 - Pagination included (design and SDK/data level) - Infinite scroll or click to navigate ```gherkin= Feature: DAOs Table (At least 1 DAO) Scenario: User has connected their wallet and is in at least 1 DAO. Given that the user has connected their wallet is in at least 1 DAO. Then the user should see the number of DAOs they're in And the DAOs Table should display each DAO and DAO metadata (name, vaults -- token balance total in USD, member count, total proposals, network, delegate) ``` ```gherkin= Feature: DAOs Table (No DAOs) Scenario: User has connected their wallet but is not in any DAOs. Given that the user has connected their wallet and is not in any DAOs Then the DAOs table should display the empty state UI ``` ```gherkin= Feature: DAOs Table (In lots of DAOs) Scenario: User is in lots of DAOs (where the number exceeds our initial table view). Given that the user is a number of DAOs that exceeds our initial table view Then paginate (or infinite scroll) the DAO table list UI. And have either an infinite scroll or UI for moving between list pages (back and forth). ``` - Questions: - Summon DAOs on GC to have actual price data? - Member is unique share holder or unique loot holder - Proposals: total and active proposals - What is an active proposal? - Notifications: Active proposal count in the red circle in the Figma - Only show proposal notifications that are relevant to the user - Unsponsored (action needed) - Voting, but user hasn't voted on - Grace - Needs processing - Delegate: - Show if a user is delegating and add delegate - What is the intention here? - Filter and Search: - What are the filter criteria? - Start with Network and go from there - Table: - Sorting by field (click on DAO name and it - sorts by DAO name) - React Table? - Default sort by Name (alphabetical) - Summing: - Can add if just the table view as it is, if across multiple pages this is a lot trickier - Question the usefulness of this, especially if it introduces complexity spanning pages - Search: - Search by DAO name - Where would we want the Search component to be? #### Questions: - Get a snapshot of the DAOs folks are in and navigate to the DAO Core UI page - Some sort of lazy loading for this if there are lots of DAOs - Consider how quickly the data comes in ### Feature: HAUS Price Component ```gherkin= Feature: HAUS Price Component (Connected, Holds HAUS) Scenario: User has connected their wallet and has a HAUS balance Given that I've connected my wallet and I'm on the Hub landing page When I have HAUS in my wallet Then I see my HAUS balance and the total value ``` ```gherkin= Feature: HAUS Price Component (Connected, No HAUS) Scenario: User has connected their wallet and has 0 HAUS balance Given that I've connected my wallet and I'm on the Hub landing page When I do not have HAUS in my wallet Then I see the price of HAUS and the balance and value are 0 ``` ```gherkin= Feature: HAUS Price Component (Not Connected) Scenario: User's wallet is not connected, but is on the Hub App landing page Given that I'm on the Hub App landing page And have not connected my wallet Then I see the Haus Price Component Card displaying the HAUS token price And a CTA / "More Info" link takes me to the HAUS page with information about purchasing HAUS ``` #### SDK - `getUserHausBalance` - SDK can grab the HAUS price data --- **Scenario**: ### Gherkin Example ```gherkin= Feature: Writer Signs up Scenario: Given that the writer is on the landing page When the writer clicks the Sign Up button And the writer inputs description, an image and a subdomain. And Optionally inputs their email credentials And they add unlocks for their subscription tiers Then the writer is taken to there writer dashboard ```