Skip to content

Implement Spark Credits UI #144

Description

@0xdevcollins

Feature: Implement Spark Credits UI

Overview

Spark Credits are application credits that prevent spam while ensuring quality contributors always have opportunities. Each FCFS bounty claim costs 1 Spark Credit. The Reputation Registry contract manages credits, but the frontend has no UI for viewing or spending them.

Depends on: #139 (TypeScript contract bindings)


Goals

  • Display user's current Spark Credit balance
  • Show credit cost before claiming bounties
  • Warn when credits are low
  • Display credit earning/spending history

Contract Methods Used

ReputationRegistry.get_credits(user: Address) → u64
ReputationRegistry.spend_credit(caller, user) → bool
  (called automatically by claim_bounty)
ReputationRegistry.award_credits(caller, user, amount)
  (called automatically on bounty completion)

Implementation Details

1. Credit Balance Widget

Create: components/reputation/credit-balance.tsx

  • Show current Spark Credit count in navbar or profile sidebar
  • Icon + number (e.g., ⚡ 5)
  • Tooltip explaining what credits are for

2. Credit Gate on Claim

Modify: hooks/use-claim-bounty.ts (from #140)

  • Before claim: check get_credits(user) ≥ 1
  • If insufficient: show "Not enough Spark Credits" with guidance
  • Show credit cost in claim confirmation dialog

3. Credit History

Create: components/reputation/credit-history.tsx

  • List of credit events: earned (bounty completion) and spent (claims)
  • Date, amount, source bounty
  • Running balance

4. Earning Explainer

Create: components/reputation/credit-explainer.tsx

  • How to earn credits (complete bounties, win competitions)
  • Credit costs per action
  • Tips for managing credits

Files Affected

Created

  • hooks/use-spark-credits.ts
  • components/reputation/credit-balance.tsx
  • components/reputation/credit-history.tsx
  • components/reputation/credit-explainer.tsx

Modified

  • components/global-navbar.tsx (add credit balance)
  • app/profile/[username]/page.tsx (add credit section)

Acceptance Criteria

  • Credit balance displayed in navbar
  • Claim flow checks credit balance before proceeding
  • Insufficient credits show clear error with guidance
  • Credit history shows earn/spend events
  • Credits update after claiming or completing bounties

Metadata

Metadata

Assignees

Labels

Type

No type

Projects

No projects

Relationships

None yet

Development

No branches or pull requests

Issue actions