As user I want to see organisations on a list page so I can find organisations I am interested in.
Acceptance Criteria
the page /app/organisations results in a list page with organisations listed in organisation cards
each card represents an organisation (body) and has following elements:
2.1 Logo
2.2 member count with icon
2.3 open, invitation or application label with icon
2.3 description which is cut after 2 lines of description and followed by "..."
2.4. membership states: when wallet is connected and the user is member, the user can see a "joined" label
On click of the organisation card the user gets to the Organisation Detail page (see beta for reference)
Org List Page is sorted by creation date (oldest on top)
As GameDAO user I want to see my wallet connect status in the top navigation including links so I can access/see them from anywhere of the page easily.
Acceptance Criteria
Mobile
The top navigation shows the wallet connect option [#69]
1.1. If user is not connected, a button is shown which triggers the wallet connect [#44]
1.2. If connected the button turn into an avatar
1.2.1 if the onchain identity email is set and a gravatar image exists for the email the gravatar is shown
1.2.2 if not a fallback image is set (see figma)
1.3. Clicking the avatar triggers the wallet flyout
Desktop
The top navigation shows the wallet connect option [#69]
2.1. If user is not connected, a button is shown which triggers the wallet connect [#44]
2.2. If connected the button turn into the connected button state showing following information:
2.2.1 The avatar is shown on the left
2.2.2 In the middle the account name and account hash are shown
2.2.3 If account is verified, a verified icon is shown in front of the hash
2.2.4 If account is not verified, no icon is shown
2.2.5 on the right an dropdown button is shown which triggers the wallet flyout
Mobile + Desktop
Both mobile and desktop show a flyout which includes following elements
3.1. The connected wallet is shown as a card including the avatar, name, verification icon and hash
3.2. the connected wallet can be changed by clicking the change button on the card
3.3. Clicking the wallet change button closes the flyout and triggers a modal box listing all available wallets
3.4. A box with your transferable balances are shown corresponding to the selected network
3.5. An account navigation is shown linking to the dashboard and various subpages of the account page
3.6. At the bottom the currently selected network is shown
3.7. Clicking on the network or the 3 dots closes the flyout and triggers a modal box listing all available networks
As gameDAO manager I want to ensure that the frontend can consume data from different chains and chain versions so that I can rely on a resilient and operational platform.
Acceptance Criteria
GraphQL handles types from different chain versions (eg. zero old version and new version with pallets based on substrate V3)
Additional Information
consider GraphQL update
consider Frontend update
try to autogenerate as much as possible
@Persqual, @vasylenko-yevhen, @2075 could you refine the ticket better so we get a read-2-develop ticket?
As user I want to find organisations on the organisations page by searching for their names so I can find the organisations I am interested in.
Acceptance Criteria
PoC: Example find organisation
A search input field is shown at the top of the org. list page
As soon as you start to type within the input field, the card on the list page are updated based on your search term: Example: https://j0y9w.csb.app/ 2.1 Organizations found: Based on your term, organisations are shown.
2.1.1. The search term is highlighted with the resulting organization title
2.2 Nothing found: In case there is no organization found, it shows a "not found" text within the flyout below the search field 3. Clicking on an organisation within the search flyout - redirects to the corresponding org.
As GameDAO user I want to see most interesting links on the top navigation so I can access them from anywhere of the page easily.
Acceptance Criteria
Mobile
Shows top bar navigation which is sticky on scroll
1.1 On the left there are 3 dots which open the organisations sidebar [#70]
1.2 In the middle the logo is shown
1.3 The logo is linked to the app root url
1.4 On the right the wallet and burger navigation are shown
Wallet [#78]
2.1 When not connected there is a button shown
2.2 When connected the button turns into an avatar
2.3 Clicking on the avatar opens a the wallet flyout [#78]
Burger Navigation
3.1 Clicking on burger navigation opens side-panel from right to left
3.2. Navigation items are listed as follows
3.2.1. Link Organisations List Page with "Organisations" to "/app/organisations"
3.2.2. Link Campaigns List Page with "Campaigns" to "/app/campaigns"
3.3.3. Link "Quests" to "/app/quests"
3.3. At the bottom a helper text + button to the documentation is shown
3.4. Social media icons are shown at the very bottom linking to the corresponding plattforms
As user I want to connect my wallet with gamedao so I can interact with the app
Acceptance Criteria
The connect button contains "connect wallet"
Clicking the button leads to a modal:
2.1. If no polkadot.js or talisman wallet is installed the modal title says "No wallet found" and a list of wallets appear which can be installed (see Screenshot 1)
2.2. The listed wallets link to the corresponding pages (see links in Additional Information)
If at least one wallet is installed the same modal appears with the title "Select wallet" (see Screenshot 2)
3.1. The installed wallets are linking to connect the wallet
3.2 The not installed wallets are linking to the corresponding wallets (see links in Additional information)
external links always open in a new tab
when the users wallet is connected the modal closes and the connect button is replaced by the wallet component
Additional Information
Screenshots are to be understood as example and not as final designs
Screenshot 1:
Screenshot 2:
Screenshot 3 (when both wallets installed):
Screenshot 4 (illustration how iconography could look like):
Wallet Links
Link Polkadot.js wallet: https://polkadot.js.org/extension/
Link Talisman wallet: https://talisman.xyz/
We do not link directly to the corresponding extension store of the browser, so that we dont have to update links if they change in the future.
###Process View
How to test
have no wallet installed (eg. inkognito tab) and click connect button
run through 2.1 & 2.2
have polkadot.js installed
run through 3, 3.1, 3.2
check all links (also if the open in new tab)
when connected see modal closing and wallet component
As frontend developer I want to query all chain information through a graphql api so I can use information into the frontend easily, gain performance and separate frontend from backend. To achieve this the creation of various graphql endpoints is reasonable, to keep building blocks small, maintainable and scalable:
Acceptance Criteria
move all frontend related files into haiku repository
"clean up" folder structure
implement graphql endpoints api in nextjs
refactor chain queries/subscriptions with graphql queries/subscriptions
As user I want to understand what my transaction is for, how much it costs and if it was successful or not so I am always in control of my funds.
Acceptance Criteria
have a modal which pops up when I want to perform a transaction
modal consists of
2.1 a TITLE which describes what action I do (see additional information for different actions)
2.2 subtitle "Transaction overview"
2.3 "Your current balance" in network token
2.4 Transaction fee
If the action contains a deposit of utility token (GAME) or stable coin (eg. aUSD):
3.1 a 2nd ACTION SUBTITLE describing the sub-action (see additional information for different sub-actions)
3.2 a linked hint "What is this used for" --> when clicking an info text shows up providing more information
3.2 "Your current balance" in corresponding action token (GAME/aUSD)
3.3 ACTION SUBLINE
Submit button
4.1 When clicking the submit button the snack bar appears with loading icon (circling)
4.2 additionally the wallet appears to sign the transaction
4.3 when transaction is signed and was successful the success snackbar appears including the trx hash
4.4 when the transaction failed the error snackbar appears including the error message the network provides
A "Get Zero/GAME or aUSD here" text (depending on the action either GAME or aUSD - always ZERO)
5.1 links to discord faucet as long as we dont have a live liquidity pool
all texts are localized
Additional Information
Transaction and deposit
Deposit Currency
TITLE
ACTION SUBTITLE
What is this used for
ACTION SUBLINE
create organisation
GAME
Create Organisation
Organisation deposit
You need to deposit the amount so you can create an organisation. You will receive your deposit back when you close the organisation.
Deposit
join organisation (if with fee - transfer)
GAME
Join Organisation
Pay Organisation fee
The organisation collects an entry fee which will be transferred to the organisation treasury.
Transfer fee
join organisation (if with fee - reserve)
GAME
Join Organisation
Reserve Organisation fee
The fee is reserved in your wallet as long you are member of the organisation.
Reserve fee
leave organistion (if reserve)
GAME
Leave Organisation
Leave and unreserve fee
The reserved fee will be unreserved in your wallet.
Unreserve fee
create campaign
GAME
Create Campaign
Campaign deposit
You need to deposit the amount so you can create a campaign.
Deposit
create proposal
GAME
Create Proposal
Proposal deposit
You need to deposit the amount so you can create a proposal.
Deposit
contribute to a campaign
PLAY/aUSD
Fund Campaign
Contribute PLAY/aUSD
Your funds will be reserved until the campaign is either successful or fails
Contribute
create onchain identity
ZERO
Set ZERO chain identity
Deposit
You need to deposit the amount so you can create an on-chain identity.
The GraphQL API needs ongoing development to have a unified codebase. This is an overarching epic collecting tasks which need to be addressed on the route to full GraphQL integration.
Tasks
Remove REST Endpoints if an implementation as plain GraphQL resolver makes sense, which is not always the case, especially for external REST data sources (#41)
Refactor API core, types and resolvers to a dedicated monorepo package to reduce implementation logic in frontend app. (#41)
Automatically generate type definitions for networks we are connecting to ( zero, acala )
Additional Information + Findings
For type generation and also resolvers, validations etc.:
As user I want to browse GameDAO so I can navigate effectively through all available objects and do not get lost.
Tasks
[#69] top navigation in place with all necessary links and mobile usable
[#70] Organisation quick access bar representing all possible behaviors including mobile solution
[#78] Wallet flyout
Additional Information
The general navigation concept should enable users to interact within their organisations and also to use the app as a product discovery platform.
As frontend developer I want to query all chain information through a graphql api so I can use information into the frontend easily, gain performance and separate frontend from backend.
Acceptance Criteria
A GraphQL indexer is implemented which can index blockchain data from any Polkadot chain (eg. ZERO, Acala) or other GraphQL indexes and REST apis (eg. Subsquid)
chain data should be saved and exposed to own (haiku) GraphQL Server
As user who interacts with an address form field I want to be able to enter an address and also to select an address from the dropdown fielt so dont make any errors while entering data.
Acceptance Criteria
each wallet address input field shall be an autocomplete-input dropdown
when entering a polkadot-chain account address it should be transformed into a local chain address (eg. ZERO)
the form field checks if the address is a valid address.
As user I want to see organisations which i am a member of, so I can easily select and switch between organisations
Acceptance Criteria
A quick access bar listing organisations is in place (for all viewports)
1.1. all organisations the user is a any type of member / owner of are listed
1.2. the organisations are sorted alphabetical
1.3. Desktop: The sidebar is always visible. Fixed on the left side of the browser window
1.4. Mobile: The side bar is shown by clicking on the 3 dots sitting within the header component
1.4.1. When the sidebar is present, the page content is moved to the right by the width of the sidebar
clicking/tapping on one of the organisation logos highlights the clicked organisation and opens the organisation overview page
2.1. When organisation is selected the position of the avatar remains at the original position
The sidebare comes in following states:
3.1 No DAO: This is used when the connected wallet is no member / owner of any organisation. In this case the sidebar shows a plus circle which links to the dao creation page
3.1.1. if the user is not connected, a modal which can be closed appears and displays "Please connect your wallet."
3.2. DAOs listed: If one or more DAOs are listed they are shown at the beginning of the list followed by a separator line and the dao creation circle button
3.3. DAO with update: If a DAO has a notification (example new proposal) a small circle is shown on top of the DAO avatar (if the user has seen the news, the notification is gone)
3.4. Many DAOs: If the sidebar lists more organisations than there is available space, I can scroll vertically with the mouse or swipe with the finger through these organisations. The last item in the list is cut off and a gradient overlay is on top of the avatar to indicate the scroll
The sidebar is sticky and the footer will be right from the sidebar for both viewports
Additional Information
The Design in Figma are shown in desktop and mobile view and are customized components.
be not loggedin and interact with the side bar (click the + and receive modal with the message to connect your wallet) on mobile and desktop
be loggedin and no member of a DAO, click the + and get to the create organisation form on mobile and desktop
be loggedin an member of one DAO, click the DAO and see page content changing to the dao detail page and the url is updated
be loggedin and member of several DAOs, resize your screen and scroll the DAOs make sure everything looks like in the design on mobile and desktop, click on a DAO an make sure that the page content and url is updated
As user I want to see all organization on a list page and to filter / sort / search to discover and join DAOs I am interested in
Acceptance Criteria
The list page shows the title of the page on the left
A create button is shown on the right, clicking on that button, it links to the create DAO process page
A search box is placed to search for organizations, search covered here: [#87]
Filter is placed, covered here [#84]
4.1 Clicking on filter opens a side panel showing the filter options
Sorting is shown, covered here [#83]
5.1 Clicking on the sorting it opens a dropdown listing the sorting options
Organization cards are shown
6.1 The organisation cards includes an avatar, the title, member count and access control info. Covered here: [#57]
Per default there are 30 org. cards shown
7.1 After 30 org. cards it shows a load more button which when clicket loads additional 30 products. This is repeated until all products are loaded
Below the load more a helper text is shown indicating how many products are loaded and how many there are in total
As frontend developer I want to query all chain information through a graphql api so I can use information into the frontend easily, gain performance and separate frontend from backend. The GraphQL endpoint should be deployed in the GameDAO infrastructure. (GameDAO-GitHub-Account instead of a Private-GitHub-Account)
As user I want to create an organisation easily so I can get as quick as possible my Organisation / DAO.
Acceptance Criteria
the create organisation process is split into 4 Steps
First step: enter Name and view slug URL (name, slug) #109
Second step: select control mechanism (either prime controls treasury or community) (body_type) #110
Third step: access mechanism and member limit #111
clicking save organisation saves the data either in the local browser storage, a centralised db or decentralised db connecting to the wallet id - and redirects the user to the organisation detail page.
As organisation member I want to create proposals and participate in voting so I can actively influence the organisation agenda.
Acceptance Criteria
Have a proposals & votings section within an organisation
Create a proposal flow
2.1 select out of all proposal types (eg: spending, campaign withdrawal, membership application, two-choice, multiple-choice, single select, multi select)
2.2 select voting type (eg. simple majority, voting power, consider quorum ()
voting period (start, end)
List proposals
4.1 vote on proposals
Additional Information
not all ideas are mandatory for AA cycle, please focus for AA cycle on currently active votings: campaign withdrawal, simple two-choice votings.
bring proposal and types into a meaningful priority order
As content maintainer and/or translator I want to maintain texts and translations on the free to use software Weblate so I can edit the texts on gamedao
Acceptance Criteria
Weblate is installed on an accessible cloud server (AWS self hosted) (please use docker image documented here )
Project "GameDAO" is set up and connected with the corresponding github repository and folder where the localized translation files are located
a non-admin user is created (eg. email address of @5-mark and credentials and URL are shared with him so he can access and start maintaining texts.
Additional Information
please select a proper location to store admin user credentials for this and coming tools running on AWS
How to test
user can access and login to the provided URL
user can change a text and create a PR within Weblate
PR can be merged and text change is visible on haiku
As user I want to filter the organisations so i can narrow down organisations I am looking for.
Acceptance Criteria
A filtering option is placed on the top of the organizations list page
Per default no filter option is selected
Clicking on the filter option triggers a slide-out from the right showing the filter options
3.1 The slideout shows the title "Filters" followed by a close icon
3.2 Filter options are liste below each other
3.3 At the bottom of the slide-out panel a "clear" button is present
Following filter options are available
4.1. By organisation type: (Individual, Company, DAO, Hybrid) --> all checkboxes // see additional infomation
4.2. By member access: (open, private) --> radio buttons
4.3. By fee model (fee, no fee) --> radio buttons
filter takes also search term into consideration
The filter component can be deactivated / activated ... @5-mark
Organisation Type Rules:
Individual = treasury owner is prime
Company = treasury owner is prime + KYB done
DAO = treasury owner is community
Hybrid = treasury owner is community + KYB done