Overview
Film Fanatic provides multiple pathways for users to discover content, from curated lists on the homepage to detailed media pages with comprehensive information about movies and TV shows.Homepage Discovery
The homepage (src/routes/index.tsx) serves as the primary entry point for content discovery with several dynamic sections:
Featured Content Sections
- Trending
- What's Popular
- Top Rated
- Upcoming
Users can switch between:
- Today - Movies trending in the last 24 hours
- This Week - Top trending content over the past week
Search Bar
A prominent search bar appears at the top of the homepage with:- Real-time search suggestions
- Auto-complete functionality
- Direct navigation to search results page
The search bar uses debounced input to avoid excessive API calls while providing a responsive experience.
Media Detail Pages
When users click on any movie or TV show, they’re taken to a comprehensive detail page with multiple sections.Movie Detail Page
Location:src/routes/movie/$id/{-$slug}/index.tsx
Title & Metadata
- Movie title and original title
- Release year and runtime
- US certification (PG, R, etc.)
- IMDb rating and vote count
- Tagline
Visual Content
- High-quality poster image
- Background backdrop
- Official trailers
- YouTube clips and teasers
Cast & Crew
- Top cast members with character names
- Key crew (director, writers, producers)
- Link to full cast/crew page
- Individual person detail pages
Additional Info
- Plot overview and description
- Genres with navigation links
- Keywords for discovery
- Recommended similar movies
- Collection membership (if applicable)
TV Show Detail Page
Location:src/routes/tv/$id/{-$slug}/index.tsx
TV shows include everything from movies plus:
Episode Browser
Episode Browser
An inline accordion-based interface allowing users to:
- Browse all seasons and episodes
- View episode thumbnails, titles, and air dates
- Read episode descriptions
- See episode ratings
- Mark episodes as watched (see Episode Tracking)
- Track viewing progress per episode
src/components/media/inline-episode-browser.tsxSeries-Specific Metadata
Series-Specific Metadata
- Series status (Ended, Canceled, Returning)
- First air date
- Number of seasons and total episodes
- Content rating for TV
- Episode runtime information
Media Recommendation System
Location:src/components/media/media-recommendation.tsx
Both movie and TV detail pages feature a recommendations section that suggests similar content based on:
- Genre similarity
- Viewer preferences
- TMDB’s recommendation algorithm
Recommendations appear as scrollable cards, allowing users to discover related content without leaving the current page.
Visual Discovery Features
Poster & Trailer Container
Location:src/components/media/media-poster-trailer-container.tsx
This component provides:
- Large poster display
- Embedded trailer player
- Modal video playback
- Automatic trailer selection (official trailers prioritized)
Media Gallery
Location:src/components/media/media-container.tsx
Users can browse:
- Backdrops - High-resolution background images
- Posters - Official poster variants in different languages
- Videos - Trailers, clips, teasers, and featurettes
Backdrops
Scenic shots from the movie/show
Posters
International poster artwork
Videos
YouTube trailers and clips
Genre & Keyword Navigation
Genre Container
Location:src/components/media/genre-container.tsx
Each media page displays associated genres as clickable badges:
- Action, Drama, Comedy, etc.
- Clicking navigates to a filtered list of that genre
- Helps users discover similar content by category
Keywords
Location:src/components/media/media-keywords.tsx
Keywords provide granular discovery:
- Specific themes (e.g., “space travel”, “revenge”)
- Settings or plot elements
- Clickable navigation to related titles
Cast & Crew Discovery
Location:src/components/media/cast-section.tsx
- Cast
- Crew
- Actor profile photos
- Character names
- Link to actor’s filmography
- Top 10 cast members shown by default
Person Pages
Location:src/routes/person.$id.tsx
Clicking any cast or crew member navigates to their dedicated page with:
- Biography
- Profile photo
- Complete filmography
- Known works
- Social media links
Collection Pages
Location:src/components/media/collections.tsx
For movies that are part of a collection (e.g., Marvel Cinematic Universe):
- Displays all movies in the collection
- Chronological or release order
- Collection artwork and description
- Easy navigation between collection entries
User Interaction Points
Throughout the discovery experience, users can:Add to Watchlist
Bookmark content for later viewing using the watchlist button on any media card or detail page.
Share Content
Share movies and shows via social links (implementation:
src/components/share-button.tsx).Watch Trailers
Play trailers and clips directly in a modal player without leaving the page.
Set Watch Status
Mark content as watching, completed, or plan to watch (see Watchlist documentation).
Technical Implementation
Data Source
All media data comes from The Movie Database (TMDB) API:- Movie details:
src/lib/queries.ts:getMovieDetails() - TV details:
src/lib/queries.ts:getTvDetails() - Search:
src/lib/queries.ts:getSearchResult()
Image Handling
Images are served via TMDB’s CDN with different quality tiers:src/constants.ts
Media Transformations
Raw API data is transformed for consistency:mapGenres()- Normalizes genre objectsmapCast()- Formats cast with character infomapCrew()- Organizes crew by departmentsplitVideos()- Categorizes videos (trailers, clips, etc.)
src/lib/media-transform.ts
