![Swift Tickets Cover](https://private-user-images.githubusercontent.com/66754344/260296768-64d29ae3-f3db-4b0c-ac7c-a4638b210a28.png?jwt=eyJhbGciOiJIUzI1NiIsInR5cCI6IkpXVCJ9.eyJpc3MiOiJnaXRodWIuY29tIiwiYXVkIjoicmF3LmdpdGh1YnVzZXJjb250ZW50LmNvbSIsImtleSI6ImtleTUiLCJleHAiOjE3MjE3MTMxMzcsIm5iZiI6MTcyMTcxMjgzNywicGF0aCI6Ii82Njc1NDM0NC8yNjAyOTY3NjgtNjRkMjlhZTMtZjNkYi00YjBjLWFjN2MtYTQ2MzhiMjEwYTI4LnBuZz9YLUFtei1BbGdvcml0aG09QVdTNC1ITUFDLVNIQTI1NiZYLUFtei1DcmVkZW50aWFsPUFLSUFWQ09EWUxTQTUzUFFLNFpBJTJGMjAyNDA3MjMlMkZ1cy1lYXN0LTElMkZzMyUyRmF3czRfcmVxdWVzdCZYLUFtei1EYXRlPTIwMjQwNzIzVDA1MzM1N1omWC1BbXotRXhwaXJlcz0zMDAmWC1BbXotU2lnbmF0dXJlPWZlMTNkNWU2NTU4MWIxZTMzMjhkMWE3YWRmNTRhNmFlOTdjNzQ5M2NjZDBiYzljODAwZjBlM2M5NGE1NjBiNWImWC1BbXotU2lnbmVkSGVhZGVycz1ob3N0JmFjdG9yX2lkPTAma2V5X2lkPTAmcmVwb19pZD0wIn0.vfPCEtY27Avr75u4nyntJXGkY0cB9wySPCPkSP_zpcE)
🔗 Live demo: https://swift-tickets.vercel.app
🔗 ETHGlobal showcase: https://ethglobal.com/showcase/swift-tickets-taylors-version-zvhsz
You've likely heard of Ticketmaster’s inability to handle bots, especially in November '22 when fans waited HOURS (just to get nothing), or most recently in August '23, when their Eras Tour Verified Fan program was basically a lottery ticket—thousands of fans were waitlisted.
The Events Tickets market is a huge opportunity. According to Statista:
"Revenue in the Event Tickets market is projected to reach $78B USD in 2023, [...] and an expected 760M users by 2027"
Ticketmaster is a monopoly and their Verified Fan just doesn't work.
Canadian fans are frustrated that they're all on the waitlist for Swift's Eras Tour in Toronto (November 2024). There was only a 1 in 400 chance of getting a ticket (source), so it's actually easier to get into Harvard than to get a Eras ticket :P
With Swift Tickets' use of World ID, only real humans can buy tickets! This prevents bots from accessing the checkout.
There’s been privacy concerns with Worldcoin, but Swifties will literally do anything to get a ticket—in the future, I'll implement different verification levels based on orb / phone verification, which can differentiate their chances of getting in by how much we're able to prove they're human.
Swift Tickets is an events platform that leverages Worldcoin's World ID to discourage ticket scalpers + prevent bots from buying Taylor Swift concert tickets. Every sponsor tech's integration in this dapp was intentionally and thoughfully chosen to provide a seamless user experience.
- Worldcoin's World ID for bot prevention
- Deployed on the Superchain (Optimism, Base, Zora, Mode)
- Supabase for World ID web backend verification
- NFT metadata stored on IPFS through Pinata
- Alchemy and QuickNode for RPC endpoints
The tickets are all deployed on different chains, separated by seat sections! For example, at a stadium there's 100 level, 200 level, etc. and seat sections in each. Each of these sections have tickets deployed on a different chain, which leverages the Superchain's horizontal scaling to provide more accessibility to users in case they're on another network. If 10s of thousands of Swifties are trying to mint an NFT at the same time, it might even help with congestion/gas fees! Deployments were made using Hardhat, with networks in /blockchain/hardhat.config.js
.
The key value prop of this platform is using World ID to prevent bots. The UI/UX is similar to a reCAPTCHA, with users clicking on the I'm Human
button to verify with Worldcoin. Once verified, a useEffect
will automatically check if the user is verified in the Supabase database and show a green approval. If not verified, the Purchase NFT Ticket
button won't work!
Important: since user's can game the frontend, the web verification can't be just done on the frontend, which is why Supabase is used. In verify.ts
, the if (verifyRes.status == 200)
block contains the lines where the user's address + a isWorldcoinVerified
boolean is sent to Supabase. In the frontend, when determining whether to show a I'm Human
or Verified
button, Supabase is called to determine if the user is verified.
- Next.js app frontend built with TypeScript and HTML/CSS, with a
verify.ts
API route for World ID verification. - Hardhat project for deploying Solidity smart contracts.
- Design + branding was inspired by Zora!
Currently it's only a NFT ticket, but there's no QR code for user's to actually get into the event! Usually QR codes are sent by email, so I'll want to implement this so that a QR code is emailed when they purchase the NFT ticket.
To the make the dapp fully onchain, I'll scrap the Supabase backend for onchain proofs.
If users don't want to pay with ETH, they should be able to buy tickets with USDC (or other stablecoins) and fiat.
There's currently no option to buy more than 1 ticket unless you redo the entire process, which is a pain. Ticketmaster allows fans to buy a maximum of four Eras tickets, so I'll need to add a # of tickets option.
The target initial customers are more well-known artists like Taylor Swift, which is where the ticket scalpers + bots are. They won't be trying to bot a small event (eg. ETHDenver side event), so World ID is most useful for highly anticipated events like concerts + sporting events.