R

2022—23 · SDE-1 · Full-stack

TVLens.

Find something to watch — and where to watch it.

Built at AppyHigh

StatusretiredStack6 tools
TVLens

Summary

A search-first app for movies and shows: type a title or actor and get what it is, its trailers and ratings, and where you can stream it in your country. Plus a watchlist that syncs.

  • Search across movies, shows, and where to stream them
  • Watchlist with trailers, ratings, and streaming availability
  • Normalization layer over messy upstream APIs to keep the frontend simple

The frustration that started it

"What streaming service has this movie?" is a question I'd googled dozens of times. The answer always involved three tabs, a scroll through an outdated availability page, and eventually giving up. The data exists. It just isn't well-surfaced.

I built TVLens at AppyHigh to put the answer in one search box.

What it is

Type anything — a movie, a show, an actor — and get both what it is and where you can watch it, scoped to your country. Trailers, ratings, and a watchlist that syncs.

Design decisions

Search first, not menus

Most aggregators lead with a category grid of genres and "trending". TVLens leads with the search box. Categories are there, but under the fold — because the job when you open this app is usually "I know what I want, just tell me where."

Make it feel instant

Add to a watchlist and it renders immediately, syncs in the background. Move between a show and a season and it's pre-warmed on hover. No spinners unless you're actually searching.

Architecture

A light Next.js frontend sat in front of a BFF-style API that composed metadata and streaming-availability sources into a single response shape. React Query handled cache and revalidation. Framer Motion handled transitions — the trick was making them feel like information architecture rather than decoration, so a detail page zooms in from its card instead of navigating away.

The lesson

Search is a superpower when the domain has natural "I know what I want" intent. I didn't need to teach users about genres or moods. I just needed to get out of the way.