Skip to content

[BUIDL Audition Onchain] FULLSTACK: Voting UI with Weighted Judge Commentary #94

@jedstroke

Description

@jedstroke

This document outlines the design and implementation of the frontend experience for public and judge voting in the audition process. The UI will display vote counts and live commentary for each auditioning artist. Judge commentaries will be visually weighted and stored in decentralized storage (IPFS). While weights are dynamic, judge votes always carry a higher influence than regular votes, and judges can vote on a commentary.


Description

Design and implement the frontend experience for public and judge voting. Display vote counts and live commentary for each auditioning artist. Commentaries from judges should carry visual and systemic weight, be stored on IPFS, and be distinguishable in the UI (e.g., badge, emoji, or icon).


Features

  • UI to Display All Artists: Interface showcasing all auditioning artists in the current season.
  • Voting Button: A responsive voting button that adapts based on the voting mode (e.g., free or paid).
  • Commentary Submission and Display: Users can submit comments; all comments are fetched and displayed, optionally with real-time updates or polling.
  • Weighted Commentary System: Comments by judges will be stored with a higher weight and rendered visually with flair (badge, font size, color, etc.).
  • Live Total Votes and Unique Voter Count: Real-time count display for total votes and distinct voters per artist.
  • Judge Vote Flair: Any judge vote is automatically assigned flair and weight, indicating priority.

Voting Schema (Database or API Payload)

{
  auditionId: string;
  seasonId: string;
  voterWallet: string; // from wallet context
  comment: string; // IPFS URI
  isJudge?: boolean; // default = false
  weight?: number; // default = 1, judge = 3+
}

Commentary Schema (To IPFS)

{
  auditionId: string;
  seasonId: string;
  voterWallet: string;
  content: string;
  isJudge?: boolean;
  timestamp: number;
}

API Endpoints

  • POST /api/vote — Submit vote and optional comment (comment is stored to IPFS first)
  • GET /api/auditions/:id/votes — Get all votes + comments for an audition
  • GET /api/auditions/current — Get all auditions in current season

Acceptance Criteria

  • ✅ Each audition page must embed a TikTok video of the performance.
  • ✅ Comments section must visually differentiate judge comments with a badge.
  • ✅ Vote counts must update live, showing both totals and public/judge split.
  • ✅ Wallet signature must be required to submit a vote.
  • ✅ Duplicate vote prevention: A wallet can only vote once per audition.
  • ✅ Comments must be stored on IPFS with link stored in backend.

Related Issues


Metadata

Metadata

Assignees

Type

No type

Projects

No projects

Milestone

No milestone

Relationships

None yet

Development

No branches or pull requests

Issue actions