It's a decentralized social platform where users can post their thoughts and images and mint them into NFTs. Built using Gun JS for the decentralized database/authetication and Solidity for the NFT minting smart contracts. The smart contract was then deployed temporarily on the Ropsten, Rinkeby and Polygon testnet.
What to Run?
- Run command to compile the smart contracts into ABIs
npx hardhat compile
- Run command when???
npx hardhat test
- https://hardhat.org/plugins/nomiclabs-hardhat-etherscan.html
Follow the necessary steps from the link above.
Run command after deploying the smart contract onto a network (
rinkeby
in this case,0x5a951603fDaaBab6e9bC9149c2eCc15b1917E96c
is contract address)npx hardhat verify --network rinkeby 0x5a951603fDaaBab6e9bC9149c2eCc15b1917E96c ""
- Run command to deploy the smart contract to the network (
rinkeby
in this case). The network name, URL and account can be changed in thehardhat.config
file.npx hardhat run scripts/sample-script.js --network rinkeby
Links
- Use link below to validate the NFT with the contract adress
0x5a951603fDaaBab6e9bC9149c2eCc15b1917E96c
and tokenID5
https://testnets-api.opensea.io/asset/0x5a951603fdaabab6e9bc9149c2ecc15b1917e96c/5/validate/ https://testnets.opensea.io/niknair31898 - Use link below to see transactions related to your contract
0x5a951603fDaaBab6e9bC9149c2eCc15b1917E96c
https://rinkeby.etherscan.io/token/0x5a951603fdaabab6e9bc9149c2ecc15b1917e96c https://mumbai.polygonscan.com/address/0x5a951603fdaabab6e9bc9149c2ecc15b1917e96c - Use link below to test stuff https://admin.moralis.io/web3Api
- Fleek for deployment https://app.fleek.co/#/sites/dry-resonance-3793/deploys?accountId=cc4c5575-5a65-43f7-961f-d386a9dbcf14
- Alchemy for smart contract deployment to network https://dashboard.alchemyapi.io/
- Pinata for file distribution https://app.pinata.cloud/pinmanager
To-Dos
- General
- Ensure each client is able to connect to relay on Heroku
- Add a link to view the NFT on OpenSea
- Add a way to link existing NFTs into a post
- Posts
- Commenting
- Need to include nested comments
- Deleting
- Include a group consensus mechanism to delete posts if flagged by enough users
- While adding to reportcount consider the user's trust status to influence reportcount weight
- Remove the post automatically if the report count is X% of the total interactions on the post (including likecount, commentcount etc.)
- Calculate trust score for each user on each interaction and give priority to those in the top 80%th
- Include a group consensus mechanism to delete posts if flagged by enough users
- Commenting
- Login Component
- Can't seem to generate duplicate users with the same username so just ensure that that's the case
- NFT
- Update the smart contract to make the paytomint cost flexible (ALSO MAKE IT SO YOU GET PAYED ON PAYTOMINT COMPLETING)
- See if to include additional data in metadata and if you can write other data into blockchain
- Completed
- Change NFT post styling to make interactions more visible
- Check why text-only NFT is including an image
- Instead of encrypting only the post text maybe encrypt the whole post?
- Fix the sorting order of the posts (Doesn't work sometimes?)
- Allow for comment deletion
- Search for all of a User's posts and then filter depending on user's public key
- Fix how to pull the IPFS hash / API avatar from the data
- Check out below link to see potential APIs that can be used to convert text-only posts into images https://github.com/petersolopov/carbonara https://github.com/cyberboysumanjay/Carbon-API
- Check out below link to see how to deploy the site on IPFS https://medium.com/ethereum-developers/the-ultimate-end-to-end-tutorial-to-create-and-deploy-a-fully-descentralized-dapp-in-ethereum-18f0cf6d7e0e
- Create a page that makes individual user's content accessible
- Maybe use the common User page for the curr User too just including an 'Edit' button
- Figure out better way to route the screens
- Streamline how the flow works on sign out and sending to '/' path
- Allow removal of pfp
- Allow upload of new pfp
- While the post data gets removed from GUN peers there may still remain images on Pinata
- Kinda fixed it by getting an unpin function built on API. Check why it isn't working.
- Show react toast to confirm the edits were completed
- Also fix how the thing loads at the bottom of the feed instead of top
- Find a way to upload text-only posts as NFT (Maybe by using an API to format the text into a picture?)
- Include additional data like user's name, email-id and bio. (Make it editable)
- Check why SCSS mixins aren't working in Popups
- Liking
- Also allow unliking
- Need to also include the the public key of the user that liked the post and use that to prevent multi liking
- Like count increment works
- Put delete and share buttons into a popup menu
- Check why NFT's images aren't loading on MetaMask/OpenSea
- Setup meta data sctructure according to OpenSea guidelines
- Include MetaMask wallet login to allow for NFT stuff
- Close PostModal when post is pushed
- Include basic CRUD operations (maybe no updating since Twitter doesn;t either lmao)
- Fixed Create and put data into better format
- Reading data correctly
- Can Delete posts
- Ignoring update for now
- Use IPFS for PFP/Image uploads?
- Fix the broken initials problem
- Kinda shifted from chat to Twitter feed-ish
- Include user's pub key in the post along with alias
- Fix the posts so that they scroll within the div