srpen 2026
My Movies
Osobní katalog filmů a seriálů z TMDB v prohlížecím UI ve stylu Netflixu — s vyhledáváním, na jehož výsledky jde poslat odkaz, a watchlistem za přihlášením.

- Role
- Sólo projekt — frontend, backend, infrastruktura
- Stack
- Next.js, TypeScript, Tailwind, Postgres, Drizzle, Auth.js, Vercel, Docker
Co to přináší
- Devět řad k procházení na úvodní stránce — trending, právě v kinech, připravované, nejlépe hodnocené, dnes vysílané a čtyři žánrové — každá streamovaná přes Suspense.
- Vyhledávání je řízené adresou: dotaz žije v URL, takže na výsledky jde poslat odkaz a tlačítko zpět funguje.
- Endpoint /api/revalidate na požádání zneplatní cache odpovědí z TMDB podle tagu, místo aby se čekalo na vypršení TTL.
- Přihlášení přes GitHub a Google OAuth kvůli osobnímu watchlistu; procházení, detaily i vyhledávání fungují bez účtu.
Technický návrh
fetch, cached by tag
Klient
Next.js 16 App Router
Server
server/tmdb
Typovaný klient, cache tagy podle endpointu.
server/auth
Auth.js s adaptérem pro Drizzle.
server/watchlist
Server Actions.
/api/revalidate
Data
Postgres (Neon)
Drizzle ORM
Externí služby
TMDB API
Server Components
Drizzle
- Odpovědi z TMDB se cachují podle tagů v datové cache Nextu. Okna sahají od jednoho dne pro konfiguraci po pět minut pro vyhledávání, takže stránka s procházením žádné další volání na TMDB nespustí.
- Relace leží ve stejném Postgresu jako watchlist. Jedna databáze a jedna historie migrací, přes adaptér Auth.js pro Drizzle.