What do you want to watch next? This is why I built GoodWatch.

alp

Alper Ortac

Posted on May 6, 2024

What do you want to watch next? This is why I built GoodWatch.

Ever scrolled through Netflix, Disney+ or Hulu and wondered what to watch next?

You can:

  • Curate your own watchlist
  • Delve into recommendations from streaming services
  • Use one of countless websites and apps

Like many, I tried all of the above. They worked, to some extend. But I wanted more.

The Idea

What if you could find all scores and streaming information for movies and TV shows on one single page? This was the vision for GoodWatch:

The Boys with scores and streaming info

Looks nice, I thought. So I built it.

The Prototype

I quickly built a Remix web app that fetched movie and TV data from TMDB and grabbed scores from different sites in real-time. After only three weeks, I was proud to deliver a working prototype that brought immediate value.

I used it almost daily. Loading a movie page took a few seconds though, so I needed a better solution.

The Need for Data

I compared many workflow engines and ended up choosing the excellent Windmill.

It allows me to define data pipelines like this:

Data Pipeline for fetching movie and tv data

Baseline data is fetched from the wonderful TMDB API. Then it gets enriched with ratings from IMDb, Metacritic, and Rotten Tomatoes, plus metadata from TV Tropes.

The Challenges

One of the biggest challenges is to map the correct URL's for each data source. Some (not so) clever techniques are needed to find the correct matches.

Another trade-off is how to deal with update frequencies. The database is around 15 GB big and data upgrades need to be carefully orchestrated.

It's self-explanatory that each service's rate limiting policies are respected.

The Stack

  • Frontend: Developed with Remix, hosted on Vercel
  • Data Handling: Utilizes Windmill for data pipelines, with a primary database powered by PostgreSQL. Auxiliary data storage is handled by MongoDB, with Redis for caching to optimize performance
  • Hosting and Deployment: All services are deployed on Hetzner Cloud using Docker Compose

The Obvious

Visit GoodWatch and see how it makes movies and TV shows much easier to discover.

The project is open-source and available on GitHub: goodwatch-monorepo

Join the community on Discord: GoodWatch on Discord

The Future

The ultimate goal is to create the best recommendation engine since Jinni shut down in 2015.

I'm aiming to build a tool that understands your unique taste to help you discover hidden gems.

Feel free to ask any questions in the comments or suggest features you’d love to see!

💖 💪 🙅 🚩
alp
Alper Ortac

Posted on May 6, 2024

Join Our Newsletter. No Spam, Only the good stuff.

Sign up to receive the latest update from our blog.

Related