Functional

Contracts

  • Token for DCU Submission Reward: ERC20 compatible, allowing use across other dApps. Unlimited total supply, minted on demand during reward transactions. Total minted supply can later determine the capped total supply for future $DCU tokens.
  • NFT Dynamic Impact Product (DIP): Soulbound NFT with dynamic traits to reflect user impact. Stores data using the NFT standard schema. Transfer can be initiated upon request (e.g., account migration).
  • NFT Cleanup Contract: Factory contract to manage cleanups. Deploys contracts for solo and group cleanups (Impact Circles). Metadata includes before/after photos, geotags, timestamps, and extended schemas (e.g., name, description).
  • DCU Rewards Contract: Distributes rewards after DCU submission is confirmed. Has access roles for minting and interacts with other contracts. Updates traits in DIP on each confirmed DCU submission, either on-chain (ERC7496) or through backend updates of metadata and CID.

Backend

Tech Stack:

  • TypeScript Express server with Prisma schema.
  • Indexer to build leaderboard metrics.
  • Single endpoint to add transaction hashes for DCU submission confirmation, triggering the leaderboard builder.

Web Client

Tech Stack:

  • React/Next.js + Tailwind CSS + shadcn. Features:
  • Landing Page: Includes general information and navigation.
  • Header/Footer: Persistent components for navigation.
  • Profile Page: Displays user information and submission history.
  • Leaderboard: Paginated table (25 per page) displaying ranked DCU profiles.
  • New DCU Submission Form: For users to submit cleanup proof.
  • DCU Submission Page: Dedicated page for individual submissions.
  • New Impact Circle Form: Form to create a new Impact Circle.
  • Impact Circle Page: Manages and displays group cleanup activities.
  • Approval List: Restricted-access page for moderators to view and approve pending DCU submissions, including a button to send transactions.
  • Web3 Wallet Integration: Users authenticate via SIWE (Sign-In with Ethereum) using popular wallets.