netflix-clone-svelte Svelte Themes

Netflix Clone Svelte

Netflix clone built with Svelte and SvelteKit, developed as a learning project with custom implementation.

šŸŽ¬ Netflix Clone

A full-featured Netflix clone built with Svelte 5 and SvelteKit, featuring a modern UI, video playback, search, and a personal watchlist — all powered by a real movies/TV API.


šŸ“– Description

This project is a personal take on a Netflix-style streaming platform, developed while following a Udemy course but implemented from scratch with my own design decisions and architectural choices. It replicates the core Netflix experience: browsing a catalogue, viewing movie details in a modal, playing trailers, searching content, and managing a personal list.


šŸŽ“ Based On

This project was built using as a foundation the Udemy course SvelteKit Masterclass – Build 20 Complete SvelteKit Projects.

However, the original course project was built with Svelte 4, so I took the opportunity to fully migrate and adapt it to Svelte 5, adopting the new runes-based reactivity model ($state, $derived, $effect, etc.) and updating the codebase to reflect my own design and implementation decisions.


✨ Features

  • šŸ  Home Page – Hero banner with featured content and categorized movie/show rows
  • šŸ” Search – Real-time search across movies and TV shows
  • šŸŽ„ Video Player – Full-featured video playback using Plyr
  • šŸ“‹ My List – Add and manage a personal watchlist
  • 🪟 Preview Modal – Quick-peek modal with movie details, trailer preview, and action buttons
  • šŸ“± Responsive Design – Fully responsive layout across all screen sizes

šŸ› ļø Tech Stack

Technology Purpose
SvelteKit 2 Full-stack framework & routing
Svelte 5 UI components with runes
TypeScript Type safety
Tailwind CSS 4 Utility-first styling
Plyr Video player
Lucide Svelte Icon library
Bun As the package manager
Vite Build tool & dev server

šŸš€ Getting Started

Prerequisites

Installation

# Clone the repository
git clone https://github.com/Nyasper/netflix-clone-svelte.git
cd netflix-clone-svelte

# Install dependencies
bun install

Environment Variables

Create a .env file in the root of the project and add your API key:

TMDB_API_KEY=your_tmdb_api_key_here

You can get a free API key from The Movie Database (TMDB).

Running the Development Server

bun run dev

Then open http://localhost:5173 in your browser.

Build for Production

bun run build
bun run start

šŸ“ Project Structure

src/
ā”œā”€ā”€ lib/
│   ā”œā”€ā”€ components/     # Reusable UI components (Modal, Player, Navbar, etc.)
│   ā”œā”€ā”€ server/         # Server-side API helpers
│   ā”œā”€ā”€ stores/         # Svelte stores (my list, etc.)
│   ā”œā”€ā”€ types/          # TypeScript type definitions
│   └── helpers.ts      # Shared utility functions
└── routes/
    ā”œā”€ā”€ +page.svelte    # Home page
    ā”œā”€ā”€ search/         # Search page
    ā”œā”€ā”€ watch/          # Video player page
    ā”œā”€ā”€ myList/         # Personal watchlist page
    └── api/            # SvelteKit API endpoints

šŸ“ø Screenshots

Hero Section

Movie Catalogue

Preview Modal

Watch Page


Top categories

Loading Svelte Themes