/csc13002-sound-vault

A blockchain-powered music streaming platform that gives users access to millions of songs and offers artists full control over their music rights and royalties.

Primary LanguageJavaScriptMIT LicenseMIT


Logo

SoundVault

Decentralized application for digital music copyright
Live!

Description

SoundVault is a decentralized application to support artists in music copyright management with the following highlighted features:

  • Song management: get music copyright, view copyright, change thumbnail/cover, upload song
  • Playlist management: change thumbnail/cover, add to/remove from playlist
  • Song explorer
  • Song ranking chart
  • Social features: following, avatar/cover customization, recently played songs, liked playlist, notification, etc
  • Wallet (donate/withdraw/deposit): supports for most banking account in Viet Nam to donate for favourite song
  • Share song profit equally by smart contract: song profit is shared equally to song author and collaborators
  • Administrator view: the application also offers administrator platform to control the quality of songs, resolve user problems and support them on song verification

SoundVault not only emphasizes core functionalities but also prioritizes UI/UX to ensure users can interact easily and benefit from high-quality reliability.

Screenshots

soundvault-screenshot soundvault-screenshot soundvault-screenshot soundvault-screenshot soundvault-screenshot soundvault-screenshot soundvault-screenshot soundvault-screenshot soundvault-screenshot soundvault-screenshot soundvault-screenshot soundvault-screenshot

Tech stack

Frontend

ReactJS

Backend

Express.js MongoDB Mongoose Cloudinary Ethers.js

Blockchain

Hardhat

Deployment

Render Vercel

Building

  1. Install Node.js
  2. Clone the repository
git clone https://github.com/ntkwan/csc13002-sound-vault.git
  1. Run npm install to install all dependencies (do it individually with backend, frontend and root directory).

Usage

Run in the root directory to concurrently start the server and client.

npm run start

Note: Deposit feature requires Viet Nam bank account ID and actually working in production environment.

Client

.
├── dist
|-- src
|   |-- components, features, hooks, pages, etc
|   |-- routes
|   |-- services
  • dist: Automatically build with Vite and to be deployed
  • src: The folder that contains the source code
  • src/components, features, hooks, pages: The folder that contains the controllers which handle the requests
  • src/routes: The folder that contains the routes which define the endpoints
  • src/services: The folder that contains the services which handle the business logic

Server

.
|-- src
|   |-- config
|   |-- controllers
|   |-- middleware
|   |-- models
|   |-- routes
|   |-- utils
|   server.js
  • src: The folder that contains the source code
  • src/config: Database and cloud storage (Cloudinary) configuration
  • src/routes: The folder that contains the routes which define APIs interface
  • src/controllers: The folder that contains the services which handle the business logic
  • src/models: The folder that contains such schemas: accounts, songs, playlists, etc
  • src/utils: The folder that contains such functions to define axios request to setup payment protocol (PayOS)
  • src/middleware: The folder that contains middlewares to manage authorization and middle-logic implementation (payment validation, file filter, etc)