Skip to content

simoabid/CINEFLIX-Mobile

Repository files navigation


CINEFLIX
Your Premium Movie & TV Companion

Typing SVG

React Native Expo TypeScript NativeWind

TMDB API Platform License PRs Welcome


🏠 Home 🎬 Collections πŸ” Search πŸ“‹ My List πŸŽ₯ Detail
Home Collections Search My List Detail

Β About The Project

CINEFLIX Mobile is a premium, feature-rich movie and TV show companion app built with React Native and Expo. It delivers a Netflix-inspired experience with a stunning deep navy glassmorphism UI, infinite collection discovery, and comprehensive movie/TV show tracking.

🎯 Not just another movie app β€” CINEFLIX goes beyond browsing. With smart collection discovery, marathon tracking, and a curated experience powered by TMDB's extensive database, it's your personal cinematic universe in your pocket.

πŸ€” Why CINEFLIX?
Problem CINEFLIX Solution
πŸ” Hard to find movie collections Infinite scroll discovery of 6,400+ TMDB collections
πŸ“Š No progress tracking Track watched films, marathon progress, completion %
🎨 Boring interfaces Premium glassmorphism UI with smooth animations
πŸ—‚οΈ No organization Smart genre-based filtering (16 categories)
πŸ“± Web-only experience Full native mobile app with haptic feedback

✨ Features

β”Œβ”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”
β”‚                    🎬 CINEFLIX MOBILE                    β”‚
β”œβ”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€
β”‚                                                         β”‚
β”‚  🏠 HOME          β”‚  πŸ“š COLLECTIONS   β”‚  πŸ” SEARCH     β”‚
β”‚  β”œβ”€ Hero Carousel β”‚  β”œβ”€ Infinite Scrollβ”‚  β”œβ”€ Multi-type β”‚
β”‚  β”œβ”€ Trending      β”‚  β”œβ”€ 16 Genre Filters β”‚ β”œβ”€ Debouncedβ”‚
β”‚  β”œβ”€ Categories    β”‚  β”œβ”€ 6,400+ Results β”‚  └─ History   β”‚
β”‚  └─ Skeleton Load β”‚  └─ Detail View   β”‚               β”‚
β”‚                   β”‚                    β”‚               β”‚
β”‚  πŸ“‹ MY LIST       β”‚  πŸ‘€ ACCOUNT       β”‚  πŸŽ₯ DETAILS   β”‚
β”‚  β”œβ”€ Watchlist     β”‚  β”œβ”€ Profile       β”‚  β”œβ”€ Movie/TV  β”‚
β”‚  β”œβ”€ Favorites     β”‚  └─ Settings      β”‚  β”œβ”€ Cast/Crew β”‚
β”‚  └─ Filters       β”‚                   β”‚  β”œβ”€ Trailers  β”‚
β”‚                   β”‚                   β”‚  └─ Similar    β”‚
β”‚                                                         β”‚
β””β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”˜

🏠 Home Screen

  • Auto-rotating hero carousel with backdrop images, logos, and gradient overlays
  • Category rows β€” Trending, Popular, Top Rated, Now Playing, Upcoming
  • Smart recommendations with enhanced similarity algorithms
  • Shimmer skeleton loaders for premium loading experience
  • Pull-to-refresh for latest content updates

πŸ“š Collections β€” The Star Feature

  • Infinite scroll discovery of 6,400+ TMDB collections
  • 16 genre filter chips β€” Action, Sci-Fi, Fantasy, Horror, Animation, Comedy, Drama, and more
  • Paginated fetching β€” parallel API batch loading for instant results
  • Collection detail pages with progress tracking, film lists, and stats dashboards
  • Smart deduplication across pages with seenCollectionIds tracking
  • Search collections across TMDB's entire database

πŸ” Search

  • Multi-type search β€” Movies, TV Shows, and People in one query
  • Debounced input to minimize API calls
  • Genre-based browsing with curated category grids
  • Trending content as default suggestions

πŸ“‹ My List

  • Watchlist management β€” Add/remove movies and TV shows
  • Filter chips β€” All, Movies, TV Shows
  • Persistent storage with AsyncStorage
  • Long-press preview modal with movie details

πŸŽ₯ Detail Pages

  • Full-screen hero with backdrop and gradient overlay
  • Cast & Crew sections with actor filmographies
  • Video trailers with in-app YouTube player
  • Similar & Recommended content
  • External links to IMDb, TMDB, and more

🎨 Design System

Token Value Usage
πŸŒ™ Background #0A0A1F Deep navy β€” all screens
πŸ”΄ Accent #E50914 CTAs, active states, badges
πŸͺŸ Glass BG rgba(255,255,255,0.06) Cards, inputs, chips
πŸ”² Glass Border rgba(255,255,255,0.1) Glassmorphism edges
πŸ“ Text Primary #FFFFFF Headers, titles
πŸ“ Text Secondary #9CA3AF Body text, stats
πŸ“ Text Muted #6B7280 Hints, labels

Design Philosophy: Deep navy glassmorphism throughout β€” every card, input, chip, and modal uses translucent backgrounds with subtle borders creating a unified, premium feel across all screens.


πŸ› οΈ Tech Stack

Layer Technology Version Purpose
Framework React Native 0.81.5 Cross-platform mobile
Platform Expo 54 Development & build tooling
Language TypeScript 5.9 Type safety
Styling NativeWind (Tailwind) 4.2 Utility-first styling
Navigation Expo Router 6.0 File-based routing
Animations Reanimated 4.1 Smooth 60fps animations
Icons Lucide React Native 0.562 Consistent iconography
Gradients Expo Linear Gradient 15.0 Visual effects
HTTP Axios 1.13 API communication
Storage AsyncStorage 2.2 Local data persistence
Video YouTube iFrame 2.4 In-app trailer playback
API TMDB API v3 Latest Movie & TV data source

πŸ“ Project Architecture

cineflix-mobile/
β”œβ”€β”€ πŸ“± app/                          # Expo Router screens
β”‚   β”œβ”€β”€ _layout.tsx                  # Root layout (deep navy theme)
β”‚   β”œβ”€β”€ index.tsx                    # Splash / Welcome screen
β”‚   β”œβ”€β”€ (tabs)/                      # Tab navigation
β”‚   β”‚   β”œβ”€β”€ _layout.tsx              # Tab bar config (glassmorphism)
β”‚   β”‚   β”œβ”€β”€ index.tsx                # 🏠 Home screen
β”‚   β”‚   β”œβ”€β”€ search.tsx               # πŸ” Search screen
β”‚   β”‚   β”œβ”€β”€ collections.tsx          # πŸ“š Collections (infinite scroll)
β”‚   β”‚   β”œβ”€β”€ my-list.tsx              # πŸ“‹ My List
β”‚   β”‚   └── account.tsx              # πŸ‘€ Account
β”‚   β”œβ”€β”€ movie/[id].tsx               # πŸŽ₯ Movie detail
β”‚   β”œβ”€β”€ tv/[id].tsx                  # πŸ“Ί TV Show detail
β”‚   β”œβ”€β”€ collection/[id].tsx          # πŸ“š Collection detail
β”‚   β”œβ”€β”€ person/[id].tsx              # πŸ§‘ Actor/Person detail
β”‚   └── genre/[id].tsx               # 🏷️ Genre browse
β”‚
β”œβ”€β”€ 🧩 components/                   # Reusable UI components
β”‚   β”œβ”€β”€ Collections/                 # Collection-specific components
β”‚   β”‚   β”œβ”€β”€ CollectionsHero.tsx       # Full-width hero section
β”‚   β”‚   β”œβ”€β”€ FranchiseCard.tsx         # Grid card component
β”‚   β”‚   β”œβ”€β”€ CategoryRow.tsx           # Horizontal scroll row
β”‚   β”‚   β”œβ”€β”€ FilterChips.tsx           # Genre filter pills
β”‚   β”‚   β”œβ”€β”€ CollectionsSkeleton.tsx   # Loading skeleton
β”‚   β”‚   └── CollectionFilmCard.tsx    # Film list item
β”‚   β”œβ”€β”€ MyList/                      # My List components
β”‚   β”œβ”€β”€ HomeScreenSkeleton.tsx       # Home loading state
β”‚   β”œβ”€β”€ SkeletonLoader.tsx           # Detail loading states
β”‚   └── LongPressPreviewModal.tsx    # Preview overlay
β”‚
β”œβ”€β”€ βš™οΈ services/                     # Business logic & API
β”‚   β”œβ”€β”€ tmdb.ts                      # TMDB API client (2,400+ lines)
β”‚   β”œβ”€β”€ collectionsService.ts        # Collection progress tracking
β”‚   β”œβ”€β”€ myListService.ts             # Watchlist management
β”‚   β”œβ”€β”€ watchService.ts              # Watch history
β”‚   β”œβ”€β”€ logoCache.ts                 # Image caching
β”‚   β”œβ”€β”€ hooks/
β”‚   β”‚   β”œβ”€β”€ useCollections.ts        # Collections state management
β”‚   β”‚   └── useMyList.ts             # My List hook
β”‚   └── ...streaming services
β”‚
β”œβ”€β”€ πŸ“ types/                        # TypeScript definitions
β”‚   └── index.ts                     # All app types (390+ lines)
β”‚
└── 🎨 tailwind.config.js            # Design tokens & theme

πŸš€ Getting Started

Prerequisites

Tool Version Install
Node.js β‰₯ 18.x nodejs.org
npm β‰₯ 9.x Comes with Node.js
Expo CLI Latest npm install -g expo-cli
TMDB API Key Free tmdb.org/settings/api

Installation

# 1. Clone the repository
git clone https://github.com/yourusername/cineflix-mobile.git
cd cineflix-mobile

# 2. Install dependencies
npm install

# 3. Configure environment
cp .env.example .env
# Edit .env and add your TMDB API key:
# EXPO_PUBLIC_TMDB_API_KEY=your_api_key_here

# 4. Start the development server
npx expo start

Running on Device

# Android
npx expo start --android

# iOS
npx expo start --ios

# Web (experimental)
npx expo start --web

πŸ’‘ Tip: Install Expo Go on your phone and scan the QR code for instant testing!


πŸ”‘ Environment Variables

Variable Required Description
EXPO_PUBLIC_TMDB_API_KEY βœ… Your TMDB API v3 key
πŸ“ How to get a TMDB API Key
  1. Create a free account at themoviedb.org
  2. Go to Settings β†’ API
  3. Request an API key (select "Developer" option)
  4. Copy your API Key (v3 auth)
  5. Add it to your .env file

πŸ“Š API & Data Flow

graph LR
    A[πŸ“± App] -->|HTTP| B[🌐 TMDB API]
    B -->|Movies/TV/People| A
    A -->|Cache| C[πŸ’Ύ AsyncStorage]
    C -->|Restore| A
    A -->|Progress| D[πŸ“Š CollectionsService]
    A -->|Watchlist| E[πŸ“‹ MyListService]
    
    style A fill:#0A0A1F,stroke:#E50914,color:#fff
    style B fill:#01D277,stroke:#01D277,color:#fff
    style C fill:#1A1A2E,stroke:#E50914,color:#fff
    style D fill:#1A1A2E,stroke:#E50914,color:#fff
    style E fill:#1A1A2E,stroke:#E50914,color:#fff
Loading

Collection Discovery Flow

User opens Collections Tab
        β”‚
        β–Ό
β”Œβ”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”
β”‚ Fetch 5 pages of        β”‚
β”‚ /discover/movie         β”‚  ← 5 parallel API calls
β”‚ sorted by popularity    β”‚
β””β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”¬β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”˜
            β”‚
            β–Ό
β”Œβ”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”
β”‚ For each page:          β”‚
β”‚ 20 movies β†’ parallel    β”‚  ← 100 parallel /movie/{id} calls
β”‚ /movie/{id} detail      β”‚
β””β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”¬β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”˜
            β”‚
            β–Ό
β”Œβ”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”
β”‚ Extract unique          β”‚
β”‚ belongs_to_collection   β”‚  ← Deduplicate with seenIds
β”‚ IDs                     β”‚
β””β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”¬β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”˜
            β”‚
            β–Ό
β”Œβ”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”
β”‚ Parallel fetch          β”‚
β”‚ /collection/{id}        β”‚  ← Lightweight (no per-film details)
β”‚ for new IDs             β”‚
β””β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”¬β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”˜
            β”‚
            β–Ό
   🎬 Display instantly!
   Scroll for more β†’ repeat

πŸ—οΈ Key Implementation Details

⚑ Performance Optimizations
  • Parallel API batching β€” Up to 20 concurrent requests per scroll page
  • Lightweight collection fetch β€” getCollectionDetailsLight() uses 1 API call vs N+1
  • Deduplication tracking β€” seenCollectionIds Set prevents redundant fetches
  • Image caching β€” logoCache service for logo persistence
  • Debounced search β€” 400ms delay to reduce API pressure
  • FlatList virtualization β€” Only renders visible items
  • Skeleton loaders β€” Perceived performance with shimmer animations
🎨 Glassmorphism System

Every interactive element uses the same glassmorphism formula:

// Card / Container
backgroundColor: 'rgba(255,255,255,0.04)',    // 4% white
borderColor: 'rgba(255,255,255,0.06)',         // 6% white border
borderWidth: 1,
borderRadius: 14,

// Input / Chip
backgroundColor: 'rgba(255,255,255,0.06)',    // 6% white
borderColor: 'rgba(255,255,255,0.1)',          // 10% white border

// Active / Hover
backgroundColor: '#E50914',                    // Solid red accent
borderColor: '#E50914',
πŸ”„ State Management
  • Custom Hooks β€” useCollections, useMyList for domain-specific state
  • Service Layer β€” CollectionsService, MyListService, WatchService
  • AsyncStorage β€” Persistent data for lists, progress, and cache
  • In-memory Cache β€” discoveryCache for fast collection reloads

πŸ“± Screens Overview

# Screen Route Key Features
1 Home /(tabs)/ Hero carousel, category rows, skeleton loading
2 Search /(tabs)/search Multi-type search, genre grid, trending
3 Collections /(tabs)/collections Infinite scroll, 16 genre filters, hero
4 My List /(tabs)/my-list Watchlist, favorites, filter chips
5 Account /(tabs)/account User profile and settings
6 Movie Detail /movie/[id] Backdrop, cast, trailers, recommendations
7 TV Detail /tv/[id] Seasons, episodes, cast, similar shows
8 Collection Detail /collection/[id] Film list, progress, stats dashboard
9 Person /person/[id] Biography, filmography, photos
10 Genre /genre/[id] Paginated genre browsing

🀝 Contributing

Contributions are welcome! Here's how:

# 1. Fork the project
# 2. Create your feature branch
git checkout -b feature/amazing-feature

# 3. Commit your changes
git commit -m 'feat: add amazing feature'

# 4. Push to the branch
git push origin feature/amazing-feature

# 5. Open a Pull Request

Commit Convention

Prefix Usage
feat: New feature
fix: Bug fix
ui: Visual change
refactor: Code improvement
docs: Documentation
perf: Performance

πŸ“„ License

Distributed under the MIT License. See LICENSE for more information.


πŸ™ Acknowledgements

Resource Purpose
TMDB Movie & TV Show database
Expo React Native framework
NativeWind Tailwind CSS for RN
Lucide Icons Beautiful icon set
React Native Reanimated Smooth animations


Built with ❀️ and React Native


GitHub Stars Β Β  Follow


If you found this useful, please consider giving it a ⭐!

About

CINEFLIX-Mobile is a modern, responsive streaming service tailored for a seamless user experience on Android phones, mimicking the core functionality of major platforms like Netflix.

Resources

Stars

Watchers

Forks

Releases

No releases published

Packages

 
 
 

Contributors

Languages