Skip to content

Epic: Bounty Configure wizard (organizer host-a-bounty flow) #603

@0xdevcollins

Description

@0xdevcollins

Context

Boundless Bounty pillar, Configure phase wizard (organizer "host a bounty") in the legacy v1 app boundless. The app is REST-only (openapi-fetch + axios; no GraphQL). This flow mirrors the existing hackathon Configure wizard and reuses the escrow runner, prize math, and wallet/treasury layers. AI assist is deferred.

Depends on the backend draft endpoints for the draft DTOs: boundlessfi/boundless-nestjs milestone Bounty Configure (Host a Bounty) (#310-#317, key dependency boundlessfi/boundless-nestjs#313). The bounty escrow paths/DTOs are already in lib/api/generated/schema.d.ts, so the escrow client is unblocked.

Wizard (5 steps)

Scope -> Mode -> Submission Model -> Reward -> Review & Publish. The ModeTab (two-axis picker) and SubmissionModelTab (mode-conditional fields) are net-new with no hackathon analog; the rest mirror the hackathon tabs.

Plain taxonomy (see boundless-nestjs#317)

claimType (Single claim / Competition) x entryType (Open / Application (light) / Application (full)). A Competition pays a single winner or multiple winners (1-3 prize positions).

Mode -> field matrix (drives ModeTab + SubmissionModelTab)

Field Open + single claim Open + competition App (light) + single claim App (light) + competition App (full) + single claim App (full) + competition
entryType OPEN OPEN APPLICATION_LIGHT APPLICATION_LIGHT APPLICATION_FULL APPLICATION_FULL
claimType SINGLE_CLAIM COMPETITION SINGLE_CLAIM COMPETITION SINGLE_CLAIM COMPETITION
submissionVisibility ORGANIZER_ONLY HIDDEN (forced) ORGANIZER_ONLY HIDDEN (forced) ORGANIZER_ONLY HIDDEN (forced)
reputationMinimum required hidden hidden hidden hidden hidden
applicationWindowCloseAt hidden hidden required required required required
maxApplicants hidden required (>=2) optional optional optional optional
shortlistSize hidden hidden optional required (>=2) optional required (>=2)
submissionDeadline required required required required required required
Prize tiers (winners) 1 1-3 1 1-3 1 1-3

Blueprint to mirror

  • features/hackathons/*
  • app/(landing)/organizations/[id]/hackathons/*
  • components/organization/hackathons/new/*
  • hooks/use-hackathon-{steps,draft,publish}.ts
  • Reused as-is: lib/utils/hackathon-escrow.ts, lib/config/tokens.ts, lib/wallet/wallet-kit.ts, components/providers/wallet-provider.tsx, features/treasury/, the useEscrowOpRunner primitive.

Tasks

Verification (testnet)

Create a draft in each of the six combinations, save + resume, publish MANAGED (draft -> draft_awaiting_funding -> open), confirm one winner for single claim and the multi-position split for a competition, and confirm the negative gate checks block (competition shortlistSize < 2, open + single claim missing reputationMinimum, application entry type missing applicationWindowCloseAt).

Out of scope

Bounty Operate / Decide / Payout, AI "Draft with AI", category / tags, builder-facing discovery and apply.

Metadata

Metadata

Assignees

No one assigned

    Type

    No type
    No fields configured for issues without a type.

    Projects

    No projects

    Relationships

    None yet

    Development

    No branches or pull requests

    Issue actions