fried.software
← back to index

Media App

learning

web app

Overview

A personal watchlist and episode tracker that pulls data from the TMDb API. Built as a structured learning project to internalize Next.js App Router patterns, TypeScript, and Tailwind.

Why I built it

I learn best by building something I'll actually use. I wanted a watchlist app without ads or dark patterns, and I wanted to understand App Router data fetching properly.

Technical highlights

  • Server components for initial data fetching with client islands for interactivity
  • TMDb API integration with typed response schemas using Zod
  • Optimistic UI updates for watchlist add/remove actions
  • Local persistence via localStorage with planned Supabase migration

Hardest engineering problem

Understanding the boundary between server and client components in App Router took iteration. Getting streaming and suspense boundaries right for the episode list required several rewrites.

What I learned

App Router's mental model clicks once you stop thinking in terms of getServerSideProps and start thinking about component trees and fetch boundaries.

Stack

Next.jsTypeScriptTailwindTMDb API