Skip to main content

YMovies: a movie recommendation app

A personal project that grew from experimenting with movie recommendations into a place to discover films, build a watchlist, and find something worth watching.

Visit website
  • Interface Design
  • Full-stack Development
  • Recommendation Systems
The YMovies discovery screen.

From curiosity to a product

A well-timed Netflix suggestion made me curious about how recommendations work. I started with a content-based model: compare movie features, then use viewing history and preferences to make the suggestions more personal.

YMovies became the product around that experiment, bringing discovery, search, favourites, and watchlists into one interface.

YMovies mobile discovery screen featuring Avengers: DoomsdayYMovies Obsession film page on mobile with trailer, saved-title actions, and film details
YMovies on mobile.

Behind the screen

React handles the interface, while Node.js manages saved titles and Python ranks recommendations. Keeping public movie data separate from member features lets people explore the catalogue before signing in.

React + TypeScript

The web app

TMDB

Movie catalogue through a Vercel proxy

Node.js + Express

Member API with Supabase Auth

PostgreSQL

Watchlists and viewing history

Python + Flask

Personalized ranking
Catalogue browsing and personalized features use separate services.

Made for choosing a film

Search and filters narrow the options. Film pages bring together the story, cast, trailers, and where to watch, with the same experience adapted for smaller screens.

YMovies TV catalogue with trending, genre, and year filters above a grid of shows
Browse the catalogue, then narrow the options.
YMovies Spider-Man: Brand New Day film page with trailer, synopsis, rating, and cast
Everything about a film, in one place.
YMovies Avengers: Doomsday film page showing a saved favourite and its cast
Keep the films you want to revisit.

Project outcome

YMovies attracted a growing audience and was featured on multiple websites. As more people used the app, the recommendation engine's hosting costs became difficult to sustain. I paused the engine so I could keep the rest of YMovies online.

View source