Web App2025Live

Netflix GPT

Netflix-inspired movie discovery app on Cloudflare Workers, with TMDB-powered rows, Netflix-style hover previews, trailer hero playback, and an Ask AI mode backed by a Workers AI reasoning model.

Netflix GPT interface
Client
Personal Project
Roles

Frontend Development

AI Search UX

Edge API Design

Tech stack
React 19Redux ToolkitTailwind CSSViteFirebase AuthTMDB APICloudflare WorkersWorkers AI

The outcome

Shipped an open, deployed movie discovery app with live TMDB categories, hover previews, optional sign-in, a keyless edge API, and AI recommendations that are verified against real movie data before they reach the screen.

01

Clone the Pattern, Not Just the Posters

The useful part of building Netflix was not matching a dark background and a red logo. The project reproduces the application pattern: a trailer-led hero, category rows backed by live movie data, and hover previews that expand a poster into backdrop, rating, certification, runtime and genres. Preview details load lazily on hover and are cached, so the rows stay light until someone shows interest.

02

No Wall at the Door

A login wall is faithful to Netflix and fatal for a demo, so browsing and AI search are open to everyone and Firebase sign-in is an optional button in the header. Auth state is synced once at the app root rather than driving navigation, which keeps routing simple and lets guests and signed-in users share the same screens.

03

Keep Browse State Boring

Movie categories and application mode live in Redux Toolkit so the browse page and search experience share predictable state. The architecture is intentionally conventional: asynchronous movie data enters once, components consume stable slices, and route-level UI does not invent a second source of truth. Boring state is underrated, especially once five horizontal rows all want the same data.

04

Ask AI, Then Check Its Work

Natural-language discovery lives in its own Ask AI mode. A Cloudflare Worker sends the request to gpt-oss-120b, chosen after comparing the free-tier Workers AI models on constraint-heavy and multilingual queries. The model returns ranked picks with a one-line reason in the user's language, and every pick is checked against TMDB by title and year. Invented titles are dropped instead of being matched to whatever movie happens to share a name.

05

Secrets Stay at the Edge

The whole app runs as a single Cloudflare Worker. Static assets serve the React app, and a small API layer proxies an allowlisted set of TMDB endpoints with edge caching and handles AI requests with per-IP rate limiting. API keys never ship to the browser, and the client only ever talks to its own origin.

06

What It Proved

The live app combines an open demo experience, TMDB categories, hover previews, trailer embeds, a responsive mobile-first layout, and an AI search flow that is grounded in real data rather than trusted blindly. It demonstrates the less glamorous parts of a convincing frontend clone: data orchestration, state boundaries, keeping secrets off the client, and treating model output as a suggestion that has to be verified.