A decentralized music streaming platform prototype enabling automatic, transparent, and direct royalty payments to creators.
Strictly is a six-week thesis project that demonstrates how blockchain technology can address challenges faced by independent artists on existing streaming platforms. Instead of relying on third-party distributors that take a significant cut of streaming revenue, Strictly allows creators to publish their work and receive direct payments through digital wallets, while offering fans a transparent way to support their favorite artists.
- A user opens the dApp and connects their wallet
- They choose between listener or artist mode
- Listeners can:
- Browse the latest uploaded tracks
- Subscribe by paying a monthly fee on-chain
- Play tracks (each play is recorded on the blockchain)
- View their "Wrapped" stats showing listening breakdown
- Artists can:
- Upload track metadata (title, artist, album, genre, cover image, royalty wallet address)
- View their published tracks
- At period end, the smart contract automatically distributes each listener's subscription proportionally to the artists they listened to, based on play counts
Before you begin, make sure you have:
- Node.js (v16 or higher) and npm installed
- A Web3 wallet browser extension (e.g., MetaMask)
- Some testnet ETH (e.g., Sepolia ETH from a faucet)
-
Clone the repository
git clone https://github.com/ellarhur/strictlydapp.git cd strictlydapp -
Install dependencies
For the smart contracts:
npm install
For the frontend:
cd frontend npm install cd ..
The Strictly dApp comes pre-configured with a deployed smart contract on Ethereum Sepolia testnet.
Default Contract Address: 0xED11ACa1512Abd30b3b2f8a258d642fe6756F570
Network: Ethereum Sepolia (Chain ID: 11155111)
You can start using the app immediately without any additional configuration.
If you want to use your own deployed contract, create a frontend/.env.local file with:
VITE_STRICTLY_CONTRACT_ADDRESS=0x_your_deployed_contract_address
VITE_NETWORK_CHAIN_ID=11155111
VITE_NETWORK_NAME=Ethereum Sepolia
-
Start the frontend development server
cd frontend npm run dev -
Open your browser and navigate to
http://localhost:5173(or the URL shown in your terminal) -
Connect your wallet when prompted
-
Switch to the correct network in MetaMask (Ethereum Sepolia testnet)
-
Get testnet ETH if you don't have any:
strictlydapp/
├── contracts/ # Solidity smart contracts
│ └── Strictly.sol
├── frontend/ # React frontend
│ ├── src/
│ │ ├── components/ # React components
│ │ ├── contexts/ # React contexts (wallet, tracks)
│ │ ├── hooks/ # Custom hooks
│ │ ├── pages/ # Page components
│ │ ├── types/ # TypeScript types
│ │ └── utils/ # Utility functions
│ └── public/ # Static assets
├── scripts/ # Deployment scripts
├── ignition/ # Hardhat Ignition modules
└── README.md
- User Experience: Users must sign a transaction for every play, which can be tiresome
- No Real Audio: Tracks are mocked; actual audio streaming is not implemented
- Single Payout Address: Multi-address royalty splits not yet supported
- Legal Compliance: KYC/AML and rights verification are not production-ready
- Scalability: The current model has not been tested at scale
This prototype validates the feasibility of transparent, on-chain royalty distribution for music streaming. It demonstrates that automatic, proportional payouts to creators can be achieved, though significant work remains to make the user experience seamless and the platform production-ready.
The biggest challenge is balancing simplicity for users with accurate royalty distribution, while maintaining financial sustainability if fairness to creators is the primary incentive.
Support your favorite artists directly.