{"id":29089967,"url":"https://github.com/mcarlomagno/protosound","last_synced_at":"2026-05-16T22:32:33.772Z","repository":{"id":112992272,"uuid":"556864348","full_name":"MCarlomagno/ProtoSound","owner":"MCarlomagno","description":"🎵 ProtoSound is a web3 platform where musicians can upload their songs minting Soulbound Tokens + a collection of NFTs.","archived":false,"fork":false,"pushed_at":"2022-11-18T12:30:14.000Z","size":13959,"stargazers_count":0,"open_issues_count":0,"forks_count":1,"subscribers_count":3,"default_branch":"main","last_synced_at":"2025-06-28T04:05:34.793Z","etag":null,"topics":["chainlink","hackathon","ipfs","nft","polygon","soulbound","web3"],"latest_commit_sha":null,"homepage":"https://protosound.netlify.app/","language":"TypeScript","has_issues":true,"has_wiki":null,"has_pages":null,"mirror_url":null,"source_name":null,"license":null,"status":null,"scm":"git","pull_requests_enabled":true,"icon_url":"https://github.com/MCarlomagno.png","metadata":{"files":{"readme":"README.md","changelog":null,"contributing":null,"funding":null,"license":null,"code_of_conduct":null,"threat_model":null,"audit":null,"citation":null,"codeowners":null,"security":null,"support":null,"governance":null,"roadmap":null,"authors":null,"dei":null,"publiccode":null,"codemeta":null}},"created_at":"2022-10-24T16:57:14.000Z","updated_at":"2023-04-21T18:54:31.000Z","dependencies_parsed_at":"2023-05-22T13:45:44.362Z","dependency_job_id":null,"html_url":"https://github.com/MCarlomagno/ProtoSound","commit_stats":null,"previous_names":[],"tags_count":0,"template":false,"template_full_name":null,"purl":"pkg:github/MCarlomagno/ProtoSound","repository_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/MCarlomagno%2FProtoSound","tags_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/MCarlomagno%2FProtoSound/tags","releases_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/MCarlomagno%2FProtoSound/releases","manifests_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/MCarlomagno%2FProtoSound/manifests","owner_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/owners/MCarlomagno","download_url":"https://codeload.github.com/MCarlomagno/ProtoSound/tar.gz/refs/heads/main","sbom_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/MCarlomagno%2FProtoSound/sbom","host":{"name":"GitHub","url":"https://github.com","kind":"github","repositories_count":265437642,"owners_count":23765125,"icon_url":"https://github.com/github.png","version":null,"created_at":"2022-05-30T11:31:42.601Z","updated_at":"2022-07-04T15:15:14.044Z","host_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub","repositories_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories","repository_names_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repository_names","owners_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/owners"}},"keywords":["chainlink","hackathon","ipfs","nft","polygon","soulbound","web3"],"created_at":"2025-06-28T04:05:32.539Z","updated_at":"2026-05-16T22:32:33.696Z","avatar_url":"https://github.com/MCarlomagno.png","language":"TypeScript","funding_links":[],"categories":[],"sub_categories":[],"readme":"# ProtoSound 🎵\n[![Contracts tests](https://github.com/MCarlomagno/ProtoSound/actions/workflows/contracts.yml/badge.svg)](https://github.com/MCarlomagno/ProtoSound/actions/workflows/contracts.yml)\n[![Client tests](https://github.com/MCarlomagno/ProtoSound/actions/workflows/client.yml/badge.svg)](https://github.com/MCarlomagno/ProtoSound/actions/workflows/client.yml)\n[![Deployment](https://github.com/MCarlomagno/ProtoSound/actions/workflows/pages/pages-build-deployment/badge.svg)](https://github.com/MCarlomagno/ProtoSound/actions/workflows/pages/pages-build-deployment)\n[![Netlify Status](https://api.netlify.com/api/v1/badges/31c7afd7-508d-441c-8d51-ae8d687c8ceb/deploy-status)](https://app.netlify.com/sites/protosound/deploys)\n\n**ProtoSound** is a web3 platform where musicians can upload their songs minting a *Soulbound Tokens (song + cover)* for their profile.\n\nThis action will also generate a collection of NFTs song covers generated by the artist that will be randomly assigned to the buyers when they purchase a song.\n\n### Running this project\n\nInstall dependencies.\n\n```shell\nyarn install\n```\n\nCompile contracts\n\n```shell\nyarn hardhat compile\n```\n\n### Testing\n\nRun local hardhat node\n\n```shell\nyarn hardhat node\n```\n\nAdd your account private keys and token URIs opening `.env` or creating one\n\n```shell\nHARDHAT_ACCOUNT1='...'\nHARDHAT_ACCOUNT2='...'\nHARDHAT_ACCOUNT3='...'\n\n# For running tests\nAUDIO_URI='https://...'\nIMAGE_URI1='https://...'\nIMAGE_URI2='https://...'\nIMAGE_URI3='https://...'\n\n# For testing on Polygon Mumbai\nMATIC_ACCOUNT1='...'\nMATIC_ACCOUNT2='...'\nMATIC_ACCOUNT3='...'\n\n# defines the network to use during deployment\n# 'matic' | 'hardhat'\nNET='...'\n```\n\nRun tests, by default runs in local hardhat node\n\n```shell\nyarn hardhat test\n```\n\nOptionally you can run them in **Polygon Mumbai**\n\u003e :warning: It might take several minutes to run all the tests.\n\n```shell\nyarn hardhat test --network matic\n```\n\n### Deployment\n\nDeploy contracts to default network (local hardhat)\n\n```shell\nyarn hardhat run scripts/deploy.ts \n```\n\nOr deploy to **Polygon Mumbai** \n\n```shell\nyarn hardhat run scripts/deploy.ts --network matic\n```\n\n### How it works?\n\n\u003cdiv align=\"center\"\u003e\n\u003cimg src=\"https://raw.githubusercontent.com/MCarlomagno/ProtoSound/main/docs/contracts.png\" alt=\"Contracts\"/\u003e\n\u003c/div\u003e\n\nThe `ProtoSound` contract allows users to create songs setting a price and minting 3 types of tokens, an `AuthorSongCover` Soulbound token, an `AuthorSongAudio` Soulbound token, and a collection of `SongCover` NFT tokens. \n\nWhen another user wants to buy and consume a song, after paying the price, one of the mentioned `SongCover` tokens are randomly selected from the collection and transferred to the buyer. Aquiring a new NFT token plus the song itself.\n","project_url":"https://awesome.ecosyste.ms/api/v1/projects/github.com%2Fmcarlomagno%2Fprotosound","html_url":"https://awesome.ecosyste.ms/projects/github.com%2Fmcarlomagno%2Fprotosound","lists_url":"https://awesome.ecosyste.ms/api/v1/projects/github.com%2Fmcarlomagno%2Fprotosound/lists"}