# Project Mycelium Complete UX ## Introduction We present the complete user experience for the Project Mycelium. ## User Experience - Publicly available information - A user can consult the docs at /docs - A user can consult the privacy policy at /privacy - A user can consult the Terms and Conditions at /terms - A user can read about the marketplace at /about - A user can contact ThreeFold by consulting the page /contact - Registration and Login - A user can register at /register - Once registered they can log out and then log in at /login - Purchases - A non-logged in user can check the marketplace at /marketplace and add items to cart - To buy an item, the user must be logged in and have enough credits - Purchase UX - A user can always buy a product or service in two ways - They can Buy Now, or Add to Cart (then proceed to checkout and complete the purchase) - A non-logged in user will have access to the cart at /cart - If they then log in, the cart items will be added to their account's cart - In the /cart page, they can clear cart or delete individual items in the cart - If they try to edit the cart, a message appears telling them to log in to edit the cart - A logged in user will have access to the cart at /dashboard/cart - Then they add to cart, they can see their cart at /dashboard/cart - In the /cart page, they can clear cart or delete individual items in the cart - As a logged in user, they can edit the cart, e.g. click + to add more of that same item, or click - to remove that item - A user can see all their purchases at /dashboard/orders - A user can see their recent transactions at /dashboard/wallet Recent Transactions - Credits - A user can buy credits at /dashboard/wallet, Buy Credits - A user can transfer credits to another user at /dashboard/wallet, Transfer Credits - A user can set up Auto Top-Up Settings at /dashboard/wallet Auto Top-up Settings - Thus if a user buys an app that costs e.g. 10 USD per month, they can set an automatic wallet top-up to never go below that number, ensuring their app will never run out of credits - Marketplace - In the marketplace, a user can search and filter items in different categories - They can buy compute resources (slices) at /marketplace/compute - They can reserve a complete node (server) at /marketplace/3nodes - They can buy Mycelium gateways at /marketplace/gateways - They can buy applications (solutions) at /marketplace/applications - They can buy services at /marketplace/services - Settings - A user can change settings at /dashboard/settings - They can - Update the profile information (email can't be changed) - Name - Country - Time Zone - Change the password - Set Up SSH Public Keys - Update notification settings - Security alerts - Billing notifications - System alerts (downtime, maintenance) - Newsletter and product updates - Dashboard Notifications - Show alerts in dashboard - Show update notifications - Update their currency preferences - They can decide to have the prices displayed in - USD - TFC - EUR - CAD - Delete account - When a user deletes their account, their data is still available on the marketplace backend for security, audit and legal purposes - Dashboard UX and Provider+Consumer Interactions - A user can see their dashboard overview activities at /dashboard - A user can see their user profile and activities at /dashboard/user - A user provoding resources to the grid (aka a farmer) at /dashboard/farmer - There they can add resources, e.g. add a node to the marketplace which will be available for purchase by other users as slices (a node is distributed as slices) - A user can become an app provider at /dashboard/app-provider by registering new applications - When a user register an application - The application is displayed publicly at /marketplace/applications - The application is shown at the app provider dashboard /dashboard/app-provider at the table My Published Applications - When another user buys that app - The app provider will see that info at the table /dashboard/app-provider Active Deployments - The app purchaser will see the app info at /dashboard/user My Applications - A user can become a service provider at /dashboard/service-provider by registering new services - When a user register a service - The service is displayed publicly at /marketplace/services - The service is shown at the service provider dashboard /dashboard/service-provider at the table My Service Offerings - When another user buys that service - The service provider will see that info at the table /dashboard/service-provider Service Requests - There are 3 stages to this service request from the service provider POV - Open - In Progress - Completed - The service purchaser will see the service info at /dashboard/user My Service Bookings - A user can become a resource provider by adding nodes and thus resources to the marketplace at /dashboard/farmer - They can Add Nodes - Then it fetches the nodes on the ThreeFold Grid and distribute the node into slices - Then the slices are can be seen publicly at /marketplace/compute - Any user can then purchase slices from that farmer and access the slices - Products - Farmers at the core offer compute resources (slices) to the marketplace. - On their end, farmers host nodes on the threefold grid. nodes are split into slices. - Users can use slices for individual VMs, or for Kubernetes cluster - The UI is intuitive - .html_template_tests - Apps can be self-managed and managed - An app is at its core a slice (VM or Kubernetes cluster) with an app on top - for self-managed node, users can set their SSH public key, they set it in /dashboard/settings SSH Keys page - for managed node, users will have access to the credentials on their marketplace dashboard in /dashboard/user page at the section of the app/product they rent/bought --- - we want to have tests to check and confirm that the UX of the marketplace is as should be - thus, there should be a series of test for the UX above - we don't need any other test and we should have the tests mentioned above in an isolated section, e.g. not shared with other tests - this ensures that the tests are not affected by other tests