A decentralized marketplace for beats with blockchain-verified copyright protection. Buy, sell, and license beats with trustless ownership verification.
BeatCopyright solves a real-world problem in the music industry: copyright protection and transparent licensing for music producers and beat makers. Traditional platforms often lack transparency, have high fees, and don't provide immutable proof of ownership. This project brings Web3 principles to the music industry, giving producers control over their intellectual property.
- Music producers struggle to prove ownership and protect their beats from unauthorized use
- Licensing transactions lack transparency and trust
- Copyright disputes are expensive and time-consuming
- Middlemen take significant cuts from creators' earnings
BeatCopyright is a Substrate-based blockchain marketplace that:
- β Provides immutable copyright proof on-chain using blockchain verification
- β Enables direct producer-to-buyer transactions without intermediaries
- β Implements dispute resolution with on-chain verification
- β Ensures transparent licensing with smart contract automation
- β Protects producer rights with blockchain-verified ownership
This project fits under "User-centric Apps" - prioritizing music producers' and buyers' interests with real-world impact using Polkadot's decentralized technology stack.
- Decentralization: No central authority controls the marketplace
- User Ownership: Producers own their beats and copyright proofs on-chain
- Transparency: All transactions and licenses are publicly verifiable
- Trustless: Smart contracts handle payments and license transfers automatically
- Fairness: Direct transactions eliminate middleman fees
- List beats with metadata (title, genre, BPM, key)
- Set pricing and license types (exclusive, non-exclusive, lease)
- Generate blockchain-verified copyright proofs
- Receive direct payments via smart contracts
- Track all sales and earnings on-chain
- Browse available beats in a transparent marketplace
- Purchase licenses with instant blockchain verification
- Verify copyright before purchasing
- File disputes if copyright issues arise
- Own licenses with on-chain proof
- Verify copyright claims
- Resolve disputes through on-chain verification
- Maintain marketplace integrity
- Review and validate beat ownership
- React 18 - Modern UI framework
- TypeScript - Type-safe development
- Vite - Fast build tool and dev server
- Tailwind CSS - Utility-first styling
- shadcn/ui - Beautiful component library
- Polkadot.js API - Blockchain interaction
- React Router - Client-side routing
- Substrate - Blockchain framework
- Polkadot SDK - Web3 infrastructure
- Polkadot.js Extension - Wallet integration
- WebSocket RPC - Real-time chain connection
{
"@polkadot/api": "^16.5.2",
"@polkadot/extension-dapp": "^0.62.4",
"@polkadot/types": "^16.5.2",
"react": "^18.3.1",
"react-router-dom": "^6.30.1",
"tailwindcss": "^3.4.17"
}Before you begin, ensure you have:
- Node.js (v18 or higher) and npm installed
- Polkadot.js Extension installed in your browser
- A Substrate node running (or use testnet - see Configuration)
git clone <your-repo-url>
cd compute-escrownpm installCreate a .env file in the root directory:
# For testnet (default)
VITE_WS_ENDPOINT=wss://rococo-rpc.polkadot.io
# For local development
# VITE_WS_ENDPOINT=ws://127.0.0.1:9944npm run devThe app will be available at http://localhost:8080
- Open the app in your browser
- Install Polkadot.js extension if not already installed
- Create or import an account in the extension
- Click "Connect Polkadot Wallet" in the app
- Authorize the connection when prompted
-
Install Polkadot.js Extension
- Download from Chrome/Firefox store
- Create a new account or import existing
- Save your seed phrase securely!
-
Get Test Tokens (for testnet)
- Visit Polkadot Faucet for Rococo testnet
- Request test tokens to your account
- Switch to "Producer" role in the navigation
- Click "List New Beat"
- Fill in beat details:
- Title, description, genre
- Price (in DOT or testnet tokens)
- License type (exclusive/non-exclusive/lease)
- Audio hash (IPFS hash of your beat file)
- Submit to blockchain
- Your beat is now listed and available for purchase!
- Stay in "Buyer" role
- Browse available beats in the marketplace
- Click "Purchase License" on beats you want
- Approve the transaction in your wallet
- License is transferred to your account on-chain
- Switch to "Enforcer" role
- Review beats with "Disputed" status
- Verify copyright validity
- Click "Verify Valid" or "Reject" to resolve disputes
src/
βββ components/ # React components
β βββ BeatMarketplace/ # Main marketplace UI
β βββ Navigation/ # Top navigation bar
β βββ Hero/ # Landing page
β βββ EventFeed/ # Real-time blockchain events
βββ hooks/
β βββ useBlockchain/ # Blockchain interaction hook
βββ lib/
β βββ blockchain.ts # Polkadot.js API wrapper
βββ types/
βββ blockchain.ts # TypeScript type definitions
The app connects to a Substrate-based blockchain with a custom pallet for beat copyright management:
- Pallet Name:
beatCopyrightoraudioMarketplace - Storage: On-chain beat registry, licenses, disputes
- Events: BeatListed, LicensePurchased, DisputeFiled, CopyrightVerified
- Transactions: listBeat, purchaseLicense, fileDispute, verifyCopyright
// List a beat
listBeat(title, description, genre, price, licenseType, audioHash, copyrightProof)
// Purchase license
purchaseLicense(beatId)
// File dispute
fileDispute(beatId, reason)
// Verify copyright
verifyCopyright(beatId, isValid)# Development server with hot reload
npm run dev
# Build for production
npm run build
# Preview production build
npm run preview- Build and run your Substrate node (see
SETUP_GUIDE.md) - Update
.env:VITE_WS_ENDPOINT=ws://127.0.0.1:9944
- Restart the dev server
See SETUP_GUIDE.md for detailed instructions on:
- Installing Rust and Substrate
- Building a custom node
- Creating the beat copyright pallet
- Deploying to testnet
- Connect wallet successfully
- List a beat as producer
- Purchase license as buyer
- File dispute on a beat
- Verify copyright as enforcer
- View real-time blockchain events
- Switch between roles
compute-escrow/
βββ src/
β βββ components/ # React components
β βββ hooks/ # Custom React hooks
β βββ lib/ # Utility functions
β βββ pages/ # Page components
β βββ types/ # TypeScript types
βββ public/ # Static assets
βββ .env # Environment variables
βββ package.json # Dependencies
βββ vite.config.ts # Vite configuration
βββ tailwind.config.ts # Tailwind CSS config
βββ README.md # This file
The frontend can be deployed to any static hosting service:
- Vercel:
vercel deploy - Netlify: Connect GitHub repo
- GitHub Pages: Use
npm run buildand deploydist/folder
- Build your Substrate node:
cargo build --release - Deploy to Polkadot Cloud or your own infrastructure
- Update frontend
.envwith production WebSocket endpoint
This is a hackathon project, but contributions are welcome! Areas for improvement:
- IPFS integration for audio file storage
- Audio preview functionality
- Advanced search and filtering
- Producer analytics dashboard
- Mobile-responsive improvements
This project is open source and available under the MIT License.
- Polkadot SDK - For the amazing blockchain framework
- Substrate Developer Hub - For excellent documentation
- Polkadot.js - For seamless Web3 integration
- shadcn/ui - For beautiful UI components
For questions or support, please open an issue in this repository.
Built with β€οΈ for the Polkadot Hackathon
Bringing Web3 to the music industry, one beat at a time.