Back to projects

Web and Machine Learning

PopcornS

A movie discovery product that combines content-based recommendations with a practical watchlist workflow.

PopcornS interface
Role
Machine learning and full-stack developer
Timeline
Personal project

Overview

PopcornS makes movie recommendations useful in a real browsing session. Instead of stopping at a model prediction, it combines recommendations with trending titles, trailers, genre filters, and a personal watchlist.

The challenge

A recommendation model is only valuable when the surrounding product helps people act on the result. The project needed to make similarity understandable, keep search responsive, and connect model output to live movie information without making the interface feel like a demo notebook.

The approach

I built a content-based recommendation model over a dataset of 4,800+ films and served it through FastAPI. The Next.js client handles search and browsing, React Query manages server state, and external movie APIs add current metadata, trailers, and trending content around the model output.

Architecture

Recommendation engine

A Python and scikit-learn content-based model ranks similar films.

Backend

FastAPI serves recommendation requests and keeps model logic behind a clean API.

Frontend

Next.js and TypeScript provide search, filters, trending titles, and watchlist interactions.

External data

TMDB and OMDb enrich recommendations with posters, metadata, and trailers.

Client state

React Query keeps asynchronous search and recommendation data predictable.

Outcomes

  • Recommendations are generated across a catalog of 4,800+ films.
  • Combined a machine learning model with a complete discovery workflow.
  • Added practical product features including trailers, genres, trending content, and watchlists.

What I learned

  • Model quality is only one part of a recommendation product; discovery context affects usefulness.
  • Clear API boundaries make it easier to evolve the model without rewriting the interface.

Technologies

Next.js
TypeScript
FastAPI
Python
Scikit-learn
React Query
TMDB API
OMDb API