Tulip
Movie ticket booking platform that lets users book their movie tickets as NFTs
Screenshots


Problem Statement
With the recent James Bond movie 'No Time to Die' selling limited edition NFT tickets, it provided a strong support to the utility of using NFTs as digital assets. Tulip is based on this fundamental idea of increasing the utility of NFTs.Tulip helps users book movie tickets as NFTs. It provides an easy to use interface for web 2 users and helps them onboard into the world of NFTs.Tulip provides a range of movies to choose from. To book a movie ticket, it only requires the user to be connected to a Metamask wallet. Once the user connects the wallet and books the ticket, the ticket gets minted as a NFT to the connected wallet's address.The user can see all the NFTs minted for booking the tickets through the app. The NFTs can also be checked on Opensea by just clicking on them.
Solution
First step was setting up the repoUsed create-react-app here. Refactored it and connected metamask wallet to frontend.Second step was building the smart contractHere I used hardhat to create a basic setup, after that wrote the smart contract in Solidity by using ERC721URIStorage class from openzeppelin. Created a public function in the contract which mints the NFT to recipient's addressUpdated the networks property in hardhat.config file for deployment. Used the values of alchemy app url and wallet's key. Stored these info in .env fileAfter deployment checked polygonscan to verifyNext step was building the frontendUsed React to create the reusable componentsUsed IPFS to store JSON data for movies, This data is fetched during initialization of the appUsed Covalent APIs to get NFT metadata for the NFT's minted to an address. Used a combination of two endpoints and filtered the resultant NFT list based on current connected wallet addressWhen a Ticket is booked, the NFT metadata is first stored in IPFS and a link is generated using a IPFS gateway. After this, the function on the deployed contract is called and this link is passed to that function as metadata for the to be minted ticket NFTTechnologies used are following -Solidity - for writing the smart contractHardhat - for testing the contract locally and deployment of the contractPolygon mumbai testnet - network on which the contract is deployedAlchemy - to connect to the networkMetamask - wallet (used during contract deployment and frontend interaction with the smart contract)create-react-app - for initial react setupIPFS - for storing movies JSON data and storing NFT metadata before minting it.React Context - for maintaining the global state of the application9, React router - for implementing routes on the app. it helps the app to be single page applicationstyled-components - for styling the react componentsCovalent APIs - for getting the NFT metadata (on polygon mumbai) for a particular wallet address
Hackathon
Road to Web3
2024
Prizes
- 🏆
🏊 Polygon Pool Prize
- 🏆
🏊 Covalent Pool Prize