Music labels and platforms have been under fire of late, as they've continued to take a chunk of profits from artists while failing to comply with copyright standards. This (and our interest in Blockchain technology) inspired us to create a decentralized platform for buying and sharing music.
What it does
On Tune-Chainz, you can upload your musical creations without the need for a music label. Powered by Ethereum, a smart-contract is generated upon each song's upload, allowing users to buy, sell, and listen to music with one another without a third party. Users can also listen to music that they have bought/produced on their profile page.
How we built it
Using the Truffle Suite, we built a React app that could interact with the Ethereum Blockchain. Songs are uploaded with cover art to Cloudinary, from which they are streamed as needed. Meanwhile, MongoDB is responsible for keeping track of Users and quick querying of songs in the marketplace. The smart contract handles all financial components of our platform. Each time a song is uploaded, the address of a newly generated Song smart-contract is stored, while users can pay artists directly to listen to their work.
Challenges we ran into
Developing decentralized applications is a challenge--there is not a huge number of resources out there detailing best practices/syntax, and such applications are never discussed in the classroom. A big issue was using Metamask to interact with the smart-contract--as we were relying on a callback function after transaction confirmation, which is slightly delayed by the Chrome extension. It was also a challenge integrating so many databases into one seamless platform.
Accomplishments that we're proud of
We spent a great deal of time thinking about the user experience using Tune-Chainz, and are quite happy with the way it ended up looking, particularly the media player. We additionally feel that the use of blockchain to allow financial transactions was a challenge we were pretty successful with.
What we learned
We learned a great deal, from using Truffle in dApp development, to integrating React components and maintaining state.
What's next for Tune-Chainz
We need to iron out use of Metamask, add Redux for better control of state, and consider a better financial model (perhaps users should be able to dictate their song prize to an extent to create more of a marketplace).