TICKETMASTER is an event ticketing platform using transforming numbered NFT sets. Each TicketMaster contract reflects an event, and all NFT tickets for an event are minted upon deployment of the contract capped by a given total supply. Each NFT ticket begins with the same URI pointing to a white card with a black dot.
The user can purchase a ticket through the platform after registering/logging in using a username/password or Discord OAuth. The user will then see their ticket in the app with a QR code imposed on it, which is stored on a server. When the user arrives at the event, their QR code will be scanned and validated. Upon validation the server will send a transaction to the contract to mark the ticket as being used and also change its token URI to the transformed version of their NFT ticket, which will reveal the number they received.
The idea is to create a familiar experience for purchasing tickets with the inclusion of a digital asset. The metamorphosis from a black dot to a more colorful component of a set provides additional motivation and fun for attending an event. Having an NFT as a ticket to an event allows the person to easily hold onto a fun digital memento for a show as opposed to collecting paper ticket stubs or PDFs.
For the frontend I used React/Typescript.
For the backend I used Firebase for serverless functions for user auth and delegating owner calls to the contract. On that side I am also storing the QR codes in a mongodb.
I am storing the general dot image and the ticket set on IPFS using Pinata.
The TicketMaster contract is written in Solidity.