Skip to content

Made a project using foundry,solidity,react and ipfs that mints an nft when image is uploaded to it, people can vote for these minted nfts and the highest number of votes to nft is the winner and the winning amount goes to the winner.

License

Notifications You must be signed in to change notification settings

Aditya-alchemist/NFT-VOTING-CONTEST

Folders and files

NameName
Last commit message
Last commit date

Latest commit

ย 

History

22 Commits
ย 
ย 
ย 
ย 
ย 
ย 
ย 
ย 
ย 
ย 
ย 
ย 
ย 
ย 
ย 
ย 
ย 
ย 
ย 
ย 
ย 
ย 
ย 
ย 
ย 
ย 
ย 
ย 
ย 
ย 

Repository files navigation

NFT Minting and Voting DApp

๐Ÿ“– Table of Contents

๐Ÿ” Overview

This is a decentralized application (DApp) built with React that allows users to mint NFTs by uploading images, vote for their favorite NFTs, and select a winner. The images are uploaded to IPFS via Pinata, and the metadata is stored on the blockchain using a smart contract.

Thanks Banner Typing SVG

๐Ÿ“Š Project Insights

๐ŸŒŸ Stars ๐Ÿด Forks ๐Ÿ› Issues ๐Ÿ”” Open PRs ๐Ÿ”• Closed PRs ๐Ÿ› ๏ธ Languages ๐Ÿ‘ฅ Contributors
Stars Forks Issues Open PRs Closed PRs Languages Count Contributors Count

๐Ÿš€ Live Demo

Experience NFT-VOTING-CONTEST live here:
๐Ÿ‘‰ NFT-VOTING-CONTEST

Open Source Love svg1PRs WelcomeBuilt with LoveVisitorsGitHub ContributorsGitHub Last CommitGitHub Repo SizeGithub

๐ŸŒŸ Features

  • Connect to MetaMask wallet
  • Upload and validate image files
  • Upload images to IPFS via Pinata
  • Mint NFTs using a smart contract
  • Vote for minted NFTs
  • Select and reward the winner

GSSoC Logo

๐ŸŒŸ Exciting News...

๐Ÿš€ This project is now an official part of GirlScript Summer of Code โ€“ GSSoC'25! ๐Ÿ’ƒ๐ŸŽ‰๐Ÿ’ป We're thrilled to welcome contributors from all over India and beyond to collaborate, build, and grow NFT-VOTING-CONTEST! Letโ€™s make learning and career development smarter โ€“ together! ๐ŸŒŸ๐Ÿ‘จโ€๐Ÿ’ป๐Ÿ‘ฉโ€๐Ÿ’ป

๐Ÿ‘ฉโ€๐Ÿ’ป GSSoC is one of Indiaโ€™s largest 3-month-long open-source programs that encourages developers of all levels to contribute to real-world projects ๐ŸŒ while learning, collaborating, and growing together. ๐ŸŒฑ

๐ŸŒˆ With mentorship, community support, and collaborative coding, it's the perfect platform for developers to:

  • โœจ Improve their skills
  • ๐Ÿค Contribute to impactful projects
  • ๐Ÿ† Get recognized for their work
  • ๐Ÿ“œ Receive certificates and swag!

๐ŸŽ‰ I canโ€™t wait to welcome new contributors from GSSoC 2025 to this NFT-VOTING-CONTEST project family! Let's build, learn, and grow together โ€” one commit at a time. ๐Ÿ”ฅ๐Ÿ‘จโ€๐Ÿ’ป๐Ÿ‘ฉโ€๐Ÿ’ป

Smart Contract Functions

Public Functions

  • mintnft(string tokenUri)

    • Mints a new NFT and stores metadata on IPFS.
    • Payable function.
  • vote(uint256 tokenId, uint256 amount)

    • Votes for a specific NFT by donating ETH.
    • Payable function.
  • selectwinner()

    • Returns the ID of the NFT with the highest votes.
  • sendwinningamount()

    • Sends the reward pool to the winner's address.

View Functions

  • returncurrentrewardpool()

    • Retrieves the current reward pool amount.
  • getAllMintedNFTs()

    • Returns all minted NFTs with their details (owner, votes, token URI).
  • voterinfo(address)

    • Provides voting details for a specific user.
  • rewardpool()

    • Displays the total reward pool.

Frontend Features

Wallet Connection

  • Allows users to connect their Ethereum wallet using MetaMask.

File Upload

  • Validates and uploads NFT images (JPEG/PNG, max size 5MB).

Live Countdown Timer

  • Displays remaining time for voting.

Error Handling

  • Displays messages for invalid actions or errors (e.g., incorrect file type).

Data Fetching

  • Automatically fetches all minted NFTs and the reward pool upon wallet connection.

Prerequisites

Before you begin, ensure you have met the following requirements:

  • Node.js and npm installed
  • MetaMask installed in your browser
  • Pinata account and API keys

Installation

  1. Clone the repository:
    git clone https://github.com/Aditya41205/NFT-MINTING.git
    cd NFT-MINTING
    
  2. Install the dependencies:
    npm install
    
  3. Configuration Create a .env file in the root directory and add your Pinata API credentials:
REACT_APP_PINATA_API_KEY=your_pinata_api_key
REACT_APP_PINATA_SECRET_KEY=your_pinata_secret_key

4 Running the App Start the development server:

npm start

Usage

  1. Connect your MetaMask wallet by clicking the "Connect Wallet" button.
  2. Upload a valid PNG or JPEG image under 5MB.
  3. Click "Mint NFT" to upload the image to IPFS and mint an NFT.
  4. Enter the Token ID and amount to vote for an NFT and click "Vote".
  5. Click "Select Winner" to select a winner (only accessible by the contract owner).
  6. Click "Send Winning Amount" to send the reward to the winner (only accessible by the contract owner).
updated.mp4

Acknowledgements

More updates

Stay tuned more updates are underway to make nft minting process gasless

Issue Creation โœด

Report bugs and issues or propose improvements through our GitHub repository's "Issues" tab.

Contributions, issues, and feature requests are welcome! Feel free to open an issue or submit a pull request.

Contribution Guidelines ๐Ÿ“‘

  • Firstly Star (โญ) the Repository
  • Fork the Repository and create a new branch for any updates/changes/issue you are working on.
  • Start Coding and do changes.
  • Commit your changes
  • Create a Pull Request which will be reviewed and suggestions would be added to improve it.
  • Add Screenshots and updated website links to help us understand what changes is all about.

Contributing is fun๐Ÿงก

We welcome all contributions and suggestions! Whether it's a new feature, design improvement, or a bug fix - your voice matters ๐Ÿ’œ

Your insights are invaluable to us. Reach out to us team for any inquiries, feedback, or concerns.

๐Ÿ™ Acknowledgments

  • Thanks to all contributors of this project
  • Special shoutout to GirlScript Summer of Code (GSSoCโ€™25) for the amazing community and support!
  • Built with dedication, collaboration, and lots of chai

๐Ÿ“ž Contact

Feel free to reach out with any questions or feedback!

๐ŸคHow to Contribute

We love contributions from the community! Whether it's a bug report, a new feature, or a documentation improvement, we appreciate your help.

How to Contribute

  1. Fork the repository and create a new branch for your changes.
  2. Make your changes and ensure everything is working as expected.
  3. Submit a pull request with a clear description of your changes.

Found a Bug?

  • Check the issue tracker to see if the bug has already been reported.
  • If not, open a new issue and provide as much detail as possible.

Have a Feature Idea?

  • We'd love to hear it! Open an issue to discuss your idea.

๐Ÿค Contributing

We welcome contributions from developers of all skill levels! Here are some ways you can contribute:

Ways to Contribute

  • ๐Ÿ› Bug fixes - Help us identify and fix bugs
  • โœจ New features - Suggest and implement new functionality
  • ๐Ÿ“š Documentation - Improve our docs and guides
  • ๐ŸŽจ UI/UX improvements - Make the platform more user-friendly
  • ๐Ÿ”ง Performance optimizations - Help make NFT-VOTING-CONTEST faster and more efficient
  • ๐Ÿ“ฑ Mobile responsiveness - Improve the mobile experience
  • ๐Ÿ”’ Security enhancements - Help keep user data safe

Thank you to everyone who has made NFT-VOTING-CONTEST better! ๐Ÿ’š

๐Ÿ“œ Code of Conduct

Please refer to the Code of Conduct for details on contributing guidelines and community standards.

๐Ÿค๐Ÿ‘ค Contribution Guidelines

We love our contributors! If you'd like to help, please check out our CONTRIBUTE.md file for guidelines.

Thank you once again to all our contributors who has contributed to NFT-VOTING-CONTEST! Your efforts are truly appreciated. ๐Ÿ’–๐Ÿ‘

Contributors

Contributors

See the full list of contributors and their contributions on the GitHub Contributors Graph.

Show some Red Heart by starring this awesome repository!

๐Ÿ’ก Suggestions & Feedback

Feel free to open issues or discussions if you have any feedback, feature suggestions, or want to collaborate!

๐Ÿ™Œ Show Your Support

If you find NFT-VOTING-CONTEST project helpful, give it a star! โญ to support more such educational initiatives:

  • โญ Starring the repository
  • ๐Ÿฆ Sharing on social media
  • ๐Ÿ’ฌ Telling your friends and colleagues
  • ๐Ÿค Contributing to the project

๐Ÿ“„ License

This project is licensed under the MIT License - see the License file for details.

โญ Stargazers

๐Ÿด Forkers

๐Ÿง‘โ€๐Ÿ’ปProject Admin:

Aditya kumar mishra
Aditya kumar mishra

๐Ÿ‘จโ€๐ŸซMentors โ€“ NFT-VOTING-CONTEST (GSSoC'25)

Role Name GitHub Profile LinkedIn Profile
Mentor 1 Sitaram sahu Sitaram sitaram-sahu

Glowing Star Give us a Star and let's make magic! Glowing Star

Mirror Ball

๐Ÿ‘จโ€๐Ÿ’ป Built with โค๏ธ by NFT-VOTING-CONTEST Team

โค๏ธ Aditya kumar mishra and Contributors โค๏ธ

Open an Issue | ๐ŸŒŸ Star on GitHub | ๐Ÿš€ Live Demo

โฌ†๏ธ Back to Top

Ready to show off your coding achievements? Get started with NFT-VOTING-CONTEST today! ๐Ÿš€

About

Made a project using foundry,solidity,react and ipfs that mints an nft when image is uploaded to it, people can vote for these minted nfts and the highest number of votes to nft is the winner and the winning amount goes to the winner.

Topics

Resources

License

Stars

Watchers

Forks

Releases

No releases published

Packages

No packages published

Contributors 5