/Musixverse

Musixverse project for hackCBS 4.0

Primary LanguageJavaScript

Musixverse

Musixverse Banner


Musixverse is a decentralized platform where musicians can put up music/songs as NFTs. These NFTs can then be traded and each time an NFT gets traded, the musician will receive a certain percent of the trade as royalty! The main essence of the platform is to uplift music creators as they really do not get enough recognition and monetary benefits or royalties from the current available sources.

Website link- http://musixverse.co/

Demo link- https://youtu.be/HUONGPOYTwU

View presentation- https://drive.google.com/file/d/15lEl9dQMQkOU8H2pYo0fcHowOaOpFw5p/view?usp=sharing

Project pitch- https://youtu.be/x1Uwvio-8X4

Tech Used

Frontend

Smart Contract and Backend

Other

IPFS, Ganache, Truffle, Web3.js, Metamask, Infura, Polkadot, Elasticsearch (for future uses)

How to setup

  • Fork the repo to your account

  • Clone the forked repo to your local system using git clone https://github.com/<your-username>/Musixverse

  • Connect your local repo to the upstream using git remote add upstream https://github.com/Pushpit07/Musixverse

  • Run npm install to install npm dependencies

  • Start the local development blockchain on Ganache

  • Connect Metamask to local Ganache blockcahin

  • Run truffle migrate --reset in the terminal

  • Run npm start to start the React application

How to contribute?

  • DO NOT make and push changes to the main branch!

  • Always keep your main/working branch in sync with the main repository git pull upstream main on the branch you are working on locally.

  • Always create a new branch before making any changes git checkout -b <new-branch-name>, never ever make any changes directly on the master/main branch.

Running the Test Script

Just run: truffle test

Migrate the Contract after making any changes inside the contracts folder

truffle migrate --reset

Testing in Truffle console

  • Run: truffle console

  • Musixverse.deployed().then(function(instance) {contract = instance})

  • Test the deployed contract:

    contract.address

    contract.name()

    contract.symbol()

  • Create Song:

    contract.createSong("Yay!", "Sommaiya Angrish", 2, "imageHash123", "songHash123", false, ["spotifyLink.com", "appleLink.com", "amznLink.com"], ["Pop", ["Guitar", "Drums"], "A good day", "Non-Rhyme", "Metaphorical", "Mids heavy", "Digital", true])

  • To check the created song: contract.songs(0)

Migrating to Polygon Testnet

  • truffle migrate --network polygonTestnet