Skip to content

Create Community Pools #231

@decentralauren

Description

@decentralauren

Note to contributors

There is a draft PR up.
A few things have already been taken care of, the PR was in review.
The task is to finish the PR: #296

  1. Clone our repository if you have not already done so
  2. add git remote add <some label for remote> https://github.com/pbkompasz/GoodCollective.git
  3. git fetch <some label for remote>
  4. git checkout feat-community-pools.
  5. follow up on the review, and what has been done and apply the requested changes.
  6. create a new PR and request a review
  7. include demo video where you create a new ubi pool.

Business Description

An interface/flow to allow anyone to create a GoodCollective UBIPool smart contract without interacting with an explorer.

User Flow:

  1. Select pool type (only Community pools will be selectable for now; see design flow below)
  2. Define the GoodCollective pool details
  3. Define the contract parameters
  4. Review and Create the contract
  5. View the GoodCollective in the GoodCollective dApp

Detailed Description of Functionality

The following parameters can be configured by an admin of a new GoodCollective. These should be organized in an easy-to-use manner following the UX design.

Pool Type Selection (Required)

About Various Pools page
Each pool type should have a description pulled from GoodCollective HIW.

  • Results-Based Financing (NFT-Triggered)
  • Segmented Aid
  • Community Pool (only this option should be selectable for now)

GoodCollective Pool Details

(design reference
Get Started / Project Details

Fields (Saved to IPFS)

Reference: IPFS Save Logic

  • Image* - jpg, gif, png; max file size 20MB, (1400x256px)
  • Logo* - jpg, gif, png; max file size 1MB, (500x500px)
  • Pool Name* - 100 character max
  • Pool Description* - 500 character max
  • Reward Description - 250 character max
  • Socials* (At least one required)
    • Instagram
    • X
    • Website
    • Threads
    • Facebook

Admin Configuration

  • Admin Wallet Address* - The only wallet that can make contract upgrades or disable the contract. Defaults to the connected wallet.

Contract Parameters (Configurable in UI)

General Pool Contract Parameters

(design reference)
(Pool Configuration)

  • Admin Wallet Address (shown for display only, configured in the previous step)
  • Max # of people per pool (first come, first served)

Community Pool-Specific Parameters

  • Pool Recipients - Optional Wallet address(es) of all recipients
  • OnlyMembers: if no list provided, always false. if list provided, user can configure this setting)
  • Admin/Manager Fee - Optional fee for administration (default: 0%)
  • Claim Frequency* - Every X days (default: daily)
    • Based on the GoodDollar UBI clock (resets at 12 UTC)
  • Max Claim Amount* - In G$
  • Max Members - Uses value from 'expected members' ([todo: add link])

Default Contract Parameters (Not configurable in UI)

These will be set with default values and configurable later via the PoolAdmin UI.

UbiPoolSettings (Contracts should be based on Env)

  • MembersValidator: AddressZero
  • UniquenessValidator: 0xC361A6E67822a0EDc17D899227dd9FC50BD62F42
  • RewardToken: 0x62B8B11039FcfE5aB0C56E502b1C372A3d2a9c7A

UbiSettings

  • Cycle Length Days:
    • If <claimFrequency>7: 7
    • If <claimFrequency> > 7: <claimFrequency>
  • ClaimForEnabled: false

Extended Settings

  • Max Period Claimers: 0
  • Min Claim Amount: <maxClaimAmount>
  • Manager Fee Bps: 0 (or user-configured value)

Design Reference


Technical Implementation


TBD

  • Vetting process for displaying Pools on goodcollective (TBD)
    -- For now after creating a pool, a user will be navigated to the explorer page of the contract created
  • Some copy in the design shown as lorem ipsum, the actual copy will be provided in time

Acceptance Criteria

Specify criteria for determining if the feature meets requirements and functions correctly.

  • Should follow contribution guidelines
  • Should match design provided in Figma
  • Is responsive to desktop design (included in figma)
  • Should verify if existing components can be re-used
  • Anything in the TBD at time of putting up your pull-request is not a requirement for it get merged

Metadata

Metadata

Assignees

Type

No type

Projects

Status

Deploy and Verify

Milestone

No milestone

Relationships

None yet

Development

No branches or pull requests

Issue actions