safe-global / safe-pm

Production coordination for the Safe team primarily focused on Problems that need to be solved
2 stars 5 forks source link

There is no way to show Safe Apps information extract in dashboard (Safe Apps Widgets) #92

Open dasanra opened 2 years ago

dasanra commented 2 years ago

Part 1: Define the problem

What problem are you trying to solve?

There are many Safe Apps that enrich the Safe capabilities. Problem is that this features are almost hidden, as the user should explicit know and investigate the app to use it's full potential.

What is your hypothesis?

We are relaying some enhanced features to third parties , as they already host services that allow to show advanced information, as historical balance, different pools information to be displayed in same place or even interacting with protocols. But safe users need to know beforehand this apps exists in order to go and open some of them.

If we can enable to extract some sections from this apps and display them as widgets in the main dashboard, we will be both, showing to the user more information that we don't aggregate and also give a shortcut in order to interact with external protocols that they may not know. It will both make easier and showcase the possibilities of the Safe directly from the home screen.

What value does this bring to our customer and/or our mission? What is the goal?

We can make the Safe Apps feel more integrated into our interface. Also we can shortcut some user actions or display some information without really needing to host the full services.

How do we measure it?

Interactions with this widgets. We may configure some of them by default but ideally users should be able to select from a couple different which enhanced functionality they prefer

Links:

// Include useful research, such as user tests, competitive analysis, metrics, or surveys.

Part 2: Shaping the problem

Problem Owner

// Who is responsible for leading the shaping process of this problem statement. Owner should be assigned directly after the Great Filter meeting. PM will assist.

Non Goal(s)

Solution

Solution 1

Overview Team couldn't agree into an unique way to face this problem statement. Still we would like to get a unique outcome from this proposal.

We would like to create few POCs checking easy ways of extracting information from Safe Apps that would aim developers to create small widgets based on apps that already exists.

Rough Scoping & Timeline We would like to create POCs based in some specific Safe Apps

Risk(s), Key Trade Offs & Decisions

Concept Mocks

Alternative solutions & ideas

Open Questions

yagopv commented 2 years ago

An idea for this could be something as:

1) Exposing the widgets url in the manifest.json (Can be a documented and predefined list of sizes for the devs to choose)

widgets: {
  size1: "/widgets/widget1"
  size2: "/widgets/widget2"
  size3: "/?render=widget3"
}

So the safe-app developer indicates where the widget is in their domain

2) We show to the user the different widgets an application exposes (as we have them in the manifest, they can even provide a thumbnail). Similar to the new iOS system to choose the widgets.

3) We use the iframe for loading the widget the user want to use loading from the specified url exposed in the manifest

<iframe src="safe-app.domain.com/widgets/widget1" />

This should be very easy to do for the safe-app developers

katspaugh commented 2 years ago

I'm a little worried that if we follow the pattern of the Safe Apps themselves, which are a completely arbitrary 3rd-party HTML loaded in an iframe, we can easily overwhelm the Safe home page (Dashboard) with HTTP requests and re-renderings. There are also numerous security concerns related to loading full-blown external apps.

I propose a leaner approach where a widget exposes a single web hook that we pro-actively load and render ourselves with a pre-defined set of UI elements: https://www.notion.so/gnosis-safe/Dashboard-Widgets-API-874c034bf52c4b72b51fe20e95f5f2b3