hicommonwealth / commonwealth

A platform for decentralized communities
https://commonwealth.im
GNU General Public License v3.0
67 stars 42 forks source link

Contest Frames for Farcaster #7663

Open sachben91 opened 4 months ago

sachben91 commented 4 months ago

Description

From a Farcaster frame, users should be able to:

@sachben91

Bucket ID

7659

User Stories / Acceptance Criteria

Design Devlink

Frame prototypes

Design Screenshot

Screenshot 2024-05-03 at 2 15 30 PM

Additional Context

Some resources for implementing Frames (suggestions not guidelines)

masvelio commented 3 weeks ago

Clicking on view leaderboard should change the state of the frame to backward and forward toggle buttons, and a "view cast" button. The frame should show the top most upvoted contest entry and the "view cast" button should take the user to that cast.

@sachben91 I investigated this and it won't be possible to embed cast into the frame. It is important to understand that frame, essentially, is nothing but the image that can be enhanced by the action buttons below the image. Cast, though, is interactive component with clickable author's profile picture, nickname. Body can have selectable text, clickable image or interactive video player. All of these are impossible to display inside a frame. Considering this limitations, these are solutions that we can implement:

  1. We can use farcaster API to fetch data for leaderboard casts. Then, we can use this data to build our own "preview" of the cast and display it as a frame. Downside is that the frame can only be in 1.91:1 ratio, so if there is a lot of text in the cast, it might not fit in the frame. Also, there might be a hustle with rendering images. Videos won't be possible at all. So this will be time consuming but still the results won't be impressive. This is the example of very basic cast preview image

  2. "View leaderboard" button can be external link that will lead to our app. This should be new view as currently leaderboard for common contests is just a list of threads sorted by upvotes, which does not make sense for farcaster contest. Anyways, in the farcaster leaderboard page we would be able to use react library that renders farcaster casts and they look really good, they suport text, image, videos etc. See examples here

Personally I think that number 1 will be time consuming and for sure we will encounter more technical issues along the way. Also, it might lead to bad UX because cast previews will be very limited. Number two seems to be more reasonable from technical and UX point of view. Downside is that we are taking users away from farcaster app but the truth is that farcaster frames are mini-apps that have limited possibilities so we need to look for a compromise.

masvelio commented 1 week ago

@sachben91 This ticket has a very big scope and many things needs to be done beforehand. Also, considering this comment, the requirements of this ticket should be changed. To move this forward we need to:

cc @rbennettcw

sachben91 commented 1 week ago

@masvelio on leaderboard - will likely have a design that I'm able to hand off tomorrow, will create a separate ticket for it. Do we need a separate ticket for implementing eligibility check?

masvelio commented 1 week ago

Do we need a separate ticket for implementing eligibility check?

will leave this answer to @rbennettcw

rbennettcw commented 1 week ago

There's a lot of duplication going on. I've already started on the eligibility check.

All of the platform side tickets, I've already created and started working on: https://github.com/orgs/hicommonwealth/projects/37/views/1?filterQuery=rbennett+milestone%3A%22Contests+on+Farcaster%22

If it's already implemented in the UI, then I'll wire up the platform side to it.

masvelio commented 1 week ago

There's a lot of duplication going on. I've already started on the eligibility check.

All of the platform side tickets, I've already created and started working on: https://github.com/orgs/hicommonwealth/projects/37/views/1?filterQuery=rbennett+milestone%3A%22Contests+on+Farcaster%22

If it's already implemented in the UI, then I'll wire up the platform side to it.

UI for eligibility is ready in frames. Leaderboard - no, we need a new design