0xStation / proposer

1 stars 0 forks source link

Add self-serve RFP creation #733

Closed ilikesymmetry closed 1 year ago

ilikesymmetry commented 1 year ago

Preview app

What's included in this pr + description

Motivation & Context

Steps to test

Test 1: Permissions

  1. You have a "Create RFP" CTA on your workspace
  2. You have a "Create RFP" CTA on a workspace you are a gnosis safe signer of (rinkeby safes do not work anymore)
  3. You do NOT have a "Create RFP" CTA on a workspace that does not meet the above conditions
  4. If you go into the form flow in cases 1 & 2 and disconnect your wallet in any step, you are disabled from moving on with a message that you must connect a wallet with permission over the account you are working under

Test 2: Step RFP

  1. Cannot move on until title & body are populated
  2. If you select not-"None" option for "Word count requirement", you cannot move on until the amount is populated
  3. You can only type positive integers greater than zero for the word count requirement

Test 3: Step Payment

  1. You do not see any form input before choosing a payment direction
  2. Tokens options are filtered on current chain
  3. Token options from imports are only ERC20
  4. Token options are from the workspace, not the session's user (if you save a token for a workspace in one RFP creation flow and then create an RFP from another account with permission over it from multisig, that option is available to you too!)
  5. Payment amount are positive floats
  6. Payment amount has maximum decimals and total number size from selected token
  7. If "Advance payment" is selected as a payment term, must fill in percentage value to continue
  8. "Advance payment" percentage value is a positive float with at most two decimals and alerts users at above 100%
  9. If you disconnect your wallet, preventing from continuing until reconnecting a wallet with workspace permission

Test 4: Step Permission

  1. "None" is defaulted to enable quick skipping
  2. Token options are from workspace, not session's user
  3. Token options from imports include ERC721s
  4. Minimum balance supports positive integers for 721s and positive floats for fungible tokens
  5. If a token option is selected, must fill in a minimum balance to continue
  6. If you disconnect your wallet, preventing from continuing until reconnecting a wallet with workspace permission

Test 5: RFP metadata display

  1. On create, taken to RFP page
  2. RFP sidebar metadata aligns properly with form inputs (on view page and in propose form)
  3. Back button goes to workspace that owns the RFP -> can see new card with payment details
  4. Propose form "To" is to the workspace address
  5. Propose confirmation step shows who is the client and contributor and highlights (you) on which side you are proposing from for differentiation

Test 6: Proposal mechanics

  1. Propose form implements defined token gating
  2. Proposing will create the proper proposal role and payment definitions
  3. Proposing will automatically mark proposer's role as approved (client or contributor)

Screenshots

image image image image image image image image image

(below is for a different RFP)

image image

Outstanding issues

Relevant docs

linear[bot] commented 1 year ago

WEB-952 Self-serve RFP create form v1

vercel[bot] commented 1 year ago

The latest updates on your projects. Learn more about Vercel for Git ↗︎

Name Status Preview Updated
web ✅ Ready (Inspect) Visit Preview Nov 4, 2022 at 8:09PM (UTC)
kristencheung commented 1 year ago

[nit]: small visual nit here, when the word minimum input pops up, it kinda looks like a dropdown. Can we add some slight padding above the input and a prompt that says something along the lines of "Enter the minimum word count you'd like for proposals submitting to this RFP"

image
kristencheung commented 1 year ago

I like the percentage added!

image
kristencheung commented 1 year ago

Also like the dynamic chain :). I think as a nice to have, it would be cool to be add a message "not the right network? switch network" just so it's clearer that this is dynamic copy

image
kristencheung commented 1 year ago

Hm I don't think the token imports are working for me? Did you say you fixed this in this pr?

importing 0x91d38BB4f803b64e94baFa8fce4e02d86C8380aB etherscan https://goerli.etherscan.io/address/0x91d38BB4f803b64e94baFa8fce4e02d86C8380aB

image image
kristencheung commented 1 year ago

I have this loading screen before submitting my rfp form, but my wallet never opens. Should it? Do we need to be signing RFPs?

image
kristencheung commented 1 year ago

P1 ask: Wonder if we can render the display name in addition to the address since it's more human readable

image
kristencheung commented 1 year ago

We need to either server-side gate the form or client-side redirect if I don't have the permissions to create an RFP on your workspace. Currently I can create a form on other people's profiles if I hit the direct link

image
kristencheung commented 1 year ago

copy request: Upon receiving payment, it's kinda confusing that we're keeping the "pay" framing when it should be how I'm "receiving" money.

image
kristencheung commented 1 year ago

wonder if we can disable the input field for the proposal if I'm the author of an rfp, I forgot I can't propose to myself and wrote something and then realized I couldn't submit

image
ilikesymmetry commented 1 year ago

Hm I don't think the token imports are working for me? Did you say you fixed this in this pr? importing 0x91d38BB4f803b64e94baFa8fce4e02d86C8380aB etherscan https://goerli.etherscan.io/address/0x91d38BB4f803b64e94baFa8fce4e02d86C8380aB

@kristencheung the address you provided is the GnosisSafeProxy and is not a token?

image
ilikesymmetry commented 1 year ago

I have this loading screen before submitting my rfp form, but my wallet never opens. Should it? Do we need to be signing RFPs?

@kristencheung Good find, but we are not trying to sign RFPs right now. Decentralizing RFPs is not as high of a priority because they are not contributing to the reputation or data ownership of users. Once we want to support DevX of people being able to host RFPs on other frontends or some other reason that demands public data access, we will ask people to sign!

ilikesymmetry commented 1 year ago

We need to either server-side gate the form or client-side redirect if I don't have the permissions to create an RFP on your workspace. Currently I can create a form on other people's profiles if I hit the direct link.

@kristencheung We do not necessarily need to do either of these and the form will not let you create RFPs on other people's proposals with direct link. Notice how the "Next" button is disabled and provides the message: "Must connect a wallet with permission over this account". Did you try breaking this because it's working for me?

ilikesymmetry commented 1 year ago

P1 ask: Wonder if we can render the display name in addition to the address since it's more human readable

@kristencheung I tried copying @mcgingras 's AccountMediaRow object to replace the string name, but it feels like too much stuff tbh, I think I want to keep the purple text for now as an MVP.

image
ilikesymmetry commented 1 year ago

[nit]: small visual nit here, when the word minimum input pops up, it kinda looks like a dropdown. Can we add some slight padding above the input and a prompt that says something along the lines of "Enter the minimum word count you'd like for proposals submitting to this RFP" image

I like this a lot and added one for Advance Payment too!

image image
kristencheung commented 1 year ago

the address you provided is the GnosisSafeProxy and is not a token?

lol whoops ! can take it as user research though for error messaging 😂

Good find, but we are not trying to sign RFPs right now. Decentralizing RFPs is not as high of a priority because they are not contributing to the reputation or data ownership of users. Once we want to support DevX of people being able to host RFPs on other frontends or some other reason that demands public data access, we will ask people to sign!

Gotcha, was mainly asking about the loading screen messaging and double checking what the behavior should be!

We do not necessarily need to do either of these and the form will not let you create RFPs on other people's proposals with direct link. Notice how the "Next" button is disabled and provides the message: "Must connect a wallet with permission over this account". Did you try breaking this because it's working for me?

Oh I didn't try out the form, but I actually think this should still be gated though 🤔 It feels like RFP creation could almost be in workspace settings as a private setting, we also hide the entry point so it feels weird that we're able to see a workspace's form when we shouldn't at all.

kristencheung commented 1 year ago

I tried copying @mcgingras 's AccountMediaRow object to replace the string name, but it feels like too much stuff tbh, I think I want to keep the purple text for now as an MVP.

Oh why do you think it's too much? Personally, I think it's clearer that we're showing the human-readable name + address of the workspace