Skip to content
david shin Selected work

Selected workEntertainment / Discovery / 2026

Next Watch

Find a film, keep a watchlist, and remember what you watched. A movie and TV companion with search, ratings, and a social layer.

Next Watch movie discovery homepage with search and trending movie posters
Next WatchInterface overview

Next Watch connects movie discovery to a personal viewing history. Search and trending titles are the starting point; a watchlist, favorites, and watch log help people turn a large catalog into a choice they can return to.

My contribution

I built the browsing interface, catalog integration, and personal-library flows. The work connects Astro pages and React interactions to TMDB, with account data stored in Neon Postgres through Drizzle.

Decision: keep three different intentions separate

A favorite is something you like. A watchlist item is something you intend to watch. A logged watch records something you have seen. Combining them into one saved-items list would lose those distinctions.

The interface gives each intention its own destination. Ratings, reviews, and friends add context without replacing the core path from discovery to a personal choice.

Decision: render useful content before interaction

Movie, television, person, season, and episode pages receive server-rendered initial content. React handles interactive browsing and account features, with TanStack Query coordinating client requests.

This split lets a detail page present its content without waiting for the entire browsing interface to initialize. It also gives shared catalog links page-specific metadata.

Decision: put a controlled boundary around TMDB

Browser requests go through an application proxy that allowlists upstream paths and parameters. It bounds request time, caches successful public responses, and returns retryable errors for rate limits.

The proxy adds server-side work, but centralizes API access and failure handling. Public catalog responses can be cached separately from private library data. The repository’s isolated database tests apply migrations to an in-memory PostgreSQL instance rather than the application database.

Outcome and current scope

The public site offers a concrete discovery experience: browse trending titles, switch media types, and follow a title into its detail page. The personal-library and social features described here are implemented in the codebase; their current production behavior needs a separate signed-in check.

Local additions include episode progress, movie-night shortlists, streaming alerts, and import/export. Some depend on pending migrations, so they are not presented as verified public features. The next milestone is staging verification of those account flows before expanding the live experience.

Inside the product

Built into the details.

  1. Search and browse movies and television, with poster artwork, release dates, cast, and season details.

  2. Keep favorites and a watchlist separate from watch history, ratings, and reviews.

  3. Follow friends and explore a social feed alongside your own library.

  4. Server-side TMDB access with an allowlisted proxy, request timeout, caching, and retryable upstream errors.

Next project

FINN Workshop

Interactive 3D / Shared worlds