Skip to content

Aditya-alchemist/NFT-VOTING-CONTEST

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

 
 
 

Contributors