Files
projectmycelium/docs/dev/design/archive/threefold-marketplace-complete-ux.md
2025-09-01 21:37:01 -04:00

6.5 KiB

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