In learning OORT, Storj, and using Huygens devnet, we found fast transaction speed and outstanding support for applications related to file storage.
Several Web3 platforms on the market currently support NFT music or video, but users have to mint them, which is costly and time-consuming. With the idea of building a music network dApp closest to Web2 users, offloading unnecessary steps, and taking advantage of OORT's technology, we created Spoortify.
What it does
Spoortify allows users to create free playlists or sell them for a price calculated in CCN tokens.
The feature list includes the following:
- Create playlists: including information about name, description, price, cover image, and pay-to-listen or free.
- Create song: including information about name, description, cover image, music file, and belongs to which playlist.
- Buy playlists: with non-free playlists, users need to use CCN tokens to buy and listen to them.
- Deposit: to buy playlists, users must first deposit money into their Spoortify smart contract account. This function allows you to do just that.
- Withdraw: users can withdraw money from their balance to their ALE wallet. Once the artist sells their playlists, they can withdraw and spend the money.
Other functions include:
- Show a list of all playlists.
- Show a list of all artists and their profiles.
- Top playlists & top artists.
- Transaction history includes: deposit, withdraw and buy playlists.
All image and music files are uploaded to Storj IPFS using API.
How we built it
The system consists of three essential parts:
- Smart contract
- File Storage
To build smart contracts, we use the following:
- Huygens Devnet
- Solidity 8.17
- Open Zeppelin
To save the file, we use the following:
- Storj IPFS API.
To develop dAPP:
- Chakra UI framework
- NextJS & React
- H5 Audio Player library.
Spoortify Contract Address is 0xa668B7D670E8083bD0c9D215f240f81EA2aef96f.
Challenges we ran into
While participating in the hackathon, we encountered the following technical problems:
- Technical documentation and code examples for OORT still need to be completed, so we need more time to build a complete dApp than expected.
- ALE wallet doesn't show details of incoming and outgoing money; on Huygens devnet, we don't see a block explorer app either. Instead, we solved it by building a separate database and saving transaction history for users to look up. It's on the "balance" page.
There were also minor technical difficulties, but we found support from the discord channel and resolved it.
For business, we were thinking: "should build Playlist & Song like NFT," but because we don't want each time users to create a playlist or song, they have to mint it like an NFT, that's unnecessary and reduces user experience. Therefore, all data is stored in a cloud database, and users do not have to connect wallets and pay for basic Web2 features like that. Instead, users only interact with Spoortify Smart Contract when they perform actions such as deposit, withdraw, and buy playlists.
Accomplishments that we're proud of
- Finish a complete dAPP running on a brand new Devnet.
- Combine Web2 and Web3 technologies while providing a convenient experience for users. Get rid of unnecessary complexity.
What we learned
- Understand the Storj storage system and build a smart contract on OORT.
- We also realized the system's transaction processing and file uploading speed, which is currently faster than many well-known platforms we have worked with.
What's next for Spoortify Music Network on OORT
- Research the feature of authenticating the origin and copyright.
- Develop and improve missing features.
- Combined with the Subscription & Recurring payment feature we are developing.
- Integrate payments with more tokens.
- Plan to test, audit, and put it on the main net.