Skip to content
for recruiters
back to work

case study · 2024

Movie Web App

Live demo // private repo

A fast, responsive movie-discovery platform.

Problem

Browsing and searching a large catalog should feel instant, with state that survives navigation.

Approach

A React SPA with client-side routing and a debounced search over a movies API, designed around predictable loading and empty states.

Architecture

Results

Type

SPA

Routing

Client-side

Status

Shipped

// code

movie-app.ts
// Debounced, cancellable search
useEffect(() => {
  const ctrl = new AbortController();
  const t = setTimeout(async () => {
    const res = await fetch(`/api/search?q=${query}`, { signal: ctrl.signal });
    setResults(await res.json());
  }, 300);
  return () => { clearTimeout(t); ctrl.abort(); };
}, [query]);

lessons learned