Inspiration

In light of a certain company's recent drama surrounding dynamic ticket pricing, chaotic tour sales, and allowing bots and resellers to maximize their profits while leaving true fans in the dust, a new ticketing platform is born: fuckticketmaster. FTM was inspired by the lawsuits against Ticketmaster with regards to the chaos surrounding the Taylor Swift Eras Tour presale which resulted in resellers using bots to mass purchase presale tickets and quickly list them for resale at prices 20x-100x their original price (e.g. tickets sold at $40 presale now average over $900 on the resale market). This is a problem for 2 reasons: 1) Tickets purchased by bots to be resold keeps the tickets out of the hands of true fans and 2) 0% of the profits from resales goes to the artist. With FTM, our mission is to disincentivize resales and give more power to the artist and their true fans.

What it does

FTM is a ticketing platform at its core. But its differentiator is in how we handle resales and presales. Presale queues are important to protect for true fans to make sure profit-hungry resellers don't sell out the tickets before true fans can get in. This is why we created the concept of a Reputation Score (yes, inspired by the reputation album from TS). All FTM users get a Reputation Score based on their activity on the app. The more purchases, the higher your score. The more resale listings you put, the lower your score. In order to enter a presale queue, you must have a Reputation Score higher than our threshold in order to participate in the queue. This means, if you are an avid reseller, you likely will not qualify for any presale queues, keeping presales open to true fans only.

Our other core differentiator is how we handle resale profit. Of course from time to time users may need to resale, but any profit made from a resale is shared with the artist 50-50. That means the artist gets a share of all profit made from the tickets, so it's a win-win scenario for them.

How we built it

We built this with a Nextjs/Typescript frontend, Solidity/ethereum smart contracts, using The Graph protocol to index our contract events. For our wallet integration we used Rainbowkit with SIWE for auth.

For our presale implementation, we created a Factory-pattern style Presale contract that creates a new instance of a Presale contract each time a presale is created. In order to implement the auto-open and auto-close of the presale queues, we used Chainlink Automation to upkeep the presale queue states.

Challenges we ran into

I've used "we" a lot in this write-up, but it's just me. And that was a big challenge. I had to wear many hats of product, design, developer, frontend and backend and that was the biggest challenge. Many times I felt like I would have liked to have a team to bounce ideas off of. This was my first time using Chainlink Automations and despite it being relatively smooth, I did find it super hard to debug when it did not work. Sometimes it wouldn't run and I couldn't tell if it was because it didn't think it needed upkeep or because it was erroring out somewhere else.

Accomplishments that we're proud of

I'm honestly proud of this whole project. It turned out really well and I'm excited to continue iterating on it because I think this is a great idea and the differentiators in this project vs. what ticketing platforms look like in production today are really interesting and exciting.

What we learned

I learned a lot about The Graph protocol and events indexing as well as just ticketing in general and all the things that go into it.

What's next for fuckticketmaster

As an extension of the Reputation Score, I want to continue on with a social aspect of FTM. I want users to be able to add friends on the app as well as be able to view what shows their friends are going to and maybe an AMC Entourage type of experience where you can purchase tickets with friends. I also want to add more granularity to the Reputation Score. For example, right now the Reputation Score is only based on data we have in our contracts/txns. But I want to have a Reputation Score for users based on the artist the event is for, using data like Spotify or Apple Music to add to this Reputation Score.

Built With

Share this project:

Updates