Skip to content

Abdo-omran2206/Movie-Night-App

Folders and files

NameName
Last commit message
Last commit date

Latest commit

Β 

History

36 Commits
Β 
Β 
Β 
Β 
Β 
Β 
Β 
Β 
Β 
Β 
Β 
Β 
Β 
Β 
Β 
Β 
Β 
Β 
Β 
Β 

Repository files navigation

🎬 Movie Night

Movie Night Logo

Discover the magic of cinema. Anytime. Anywhere.

🌐 Live Demo Β Β β€’Β Β  πŸ–₯️ Repository


πŸ“ Description

Movie Night is a sleek, premium mobile and web experience that brings the magic of cinema to your fingertips. Built with modern technologies like React Native, Supabase, and Zustand, it offers an intuitive interface for discovering, searching, and exploring movies and TV shows. Whether you're looking for trending blockbusters, binge-worthy series, or hidden gems, Movie Night provides comprehensive information including cast details, ratings, genres, and plot summaries.

The application features a dark, cinematic theme with smooth animations, offering a "Netflix-inspired" premium feel that is fully optimized for all devices, making it your perfect companion for planning your next movie night.


✨ Features

🏠 Home Page

  • Trending Movies: Immersive hero cards with Parallax Scrolling effects via react-native-reanimated
  • Movie Categories: Top Rated, Popular, Upcoming, and Now Playing sections with parallel loading
  • Localized Content: Automatically dynamically detects user's region via IP and centralizes mappings in constant/main.ts
  • Responsive Design: Optimized for mobile, tablet, and desktop types with dynamic safe-area insets
  • Skeleton Loading: High-premium, pulse-animated placeholders for all movie lists and hero cards
  • Floating Navbar: A modern, glassmorphism-style floating capsule navigation bar with Haptic Feedback integration

πŸ” Search Functionality

  • Real-time Search: Search through thousands of movies and actors instantly
  • Advanced Filtering: Narrow down results by genre, rating, and date (Powered by TMDB)
  • Instant Results: Fast API responses with pulse-animated skeleton loading

πŸ“± Immersive Movie & TV Details

  • Comprehensive Information: Cast, crew, ratings, genres, seasons, and detailed overviews
  • High-Quality Media: HD backdrop and poster images
  • User Reviews: Access detailed user reviews and ratings for movies and TV shows
  • Streaming Providers: Browse and discover content available on specific streaming services
  • Integrated Playback: Watch trailers directly in-app via YouTube integration
  • Similar & Recommended Content: Discover related movies and TV shows effortlessly with integrated recommendations
  • Smart Sharing: Share movies, TV shows, and seasons with customizable templates and deep links

πŸ“š Bookmarks & Library

  • Unified Library: Save movies and TV shows with statuses like Watching, Watch Later, Completed, and Dropped
  • Guest Mode Storage: Local SQLite-based bookmarks when browsing without an account
  • Account Mode Storage: Cloud bookmarks stored in Supabase for cross-device sync
  • Seamless Migration: Guest bookmarks automatically sync to the cloud after login or registration

πŸ‘€ Actor Profiles

  • Detailed Biographies: In-depth life and career overviews for cast members
  • Quick Facts: Birthplace, gender, popularity, and aliases
  • Full Filmography: Explore an actor's entire career with deep-linked movie profiles
  • Photo Galleries: Masonry-style image galleries with full-screen viewer

πŸ” Advanced Authentication

  • Secure Flow: Full account management with Sign-in, Sign-up, and Password recovery
  • Email Verification: Secure OTP (One-Time Password) verification powered by Supabase Auth
  • Password Reset: Two-step recovery flow using Supabase OTP (reset email + in-app token & new password)
  • Cloud Sync: Seamlessly sync your bookmarks and preferences across all devices
  • Guest Mode: Browse without an account, with option to sync later

βš™οΈ App Configuration & Version Management

  • Remote Configuration: Centralized app settings managed via Supabase
  • Dynamic Share Templates: Customizable share messages for movies, TV shows, and actors with placeholder support
  • Version Control System:
    • Force Stop: Maintenance mode with custom messages (blocks app access)
    • Required Updates: Enforce minimum app version with blocking screen
    • Optional Updates: Non-intrusive update alerts for latest versions
  • Dynamic URLs: Configurable base URLs and slugs for movies/actors
  • Update Links: Direct users to app stores with configurable update URLs

πŸ› οΈ Tech Stack

  • Framework: Expo & React Native
  • Language: TypeScript (Strict typing with centralized interfaces)
  • Backend/Auth: Supabase (PostgreSQL & Auth)
  • State Management: Zustand (Persistent Storage)
  • Navigation: Expo Router (v3 File-based)
  • UI/Animations:
    • react-native-reanimated for smooth parallax and content animations
    • expo-haptics for premium tactile feedback on interactions
    • Skeleton Loading: Custom pulse-animated placeholders for enhanced UX
    • expo-linear-gradient for premium aesthetics
    • react-native-safe-area-context for responsive, Notch-aware layouts
  • Media: react-native-youtube-iframe for video integration
  • API: The Movie Database (TMDB)
  • Network: @react-native-community/netinfo for connectivity monitoring

🎨 Design System

  • Color Palette:
    • Primary: #000000 (Deep Cinematic Black)
    • Accent: #E50914 (Classic Cinema Red)
    • Text: #FFFFFF & #B3B3B3
    • Overlay: rgba(0,0,0,0.5) (Glassmorphism)
  • Typography:
    • Headers: Bebas Neue (Bold, Cinematic)
    • Body: Roboto Slab (Modern, Readable)
  • Design Tokens: Glassmorphism effects, blurred backdrops, and interactive card overlays

πŸ“‚ Project Structure

Movie-Night-App/
β”œβ”€β”€ app/
β”‚   β”œβ”€β”€ _layout.tsx              # Root layout & navigation shell
β”‚   β”œβ”€β”€ index.tsx                # Tab layout and entry screen
β”‚   β”œβ”€β”€ api/
β”‚   β”‚   β”œβ”€β”€ main.ts              # TMDB API integration helpers
β”‚   β”‚   β”œβ”€β”€ supabase.ts          # Supabase client setup
β”‚   β”‚   β”œβ”€β”€ ConfigManager.ts     # Remote config & version enforcement
β”‚   β”‚   β”œβ”€β”€ BookmarkManager.ts   # Unified guest/account bookmark facade
β”‚   β”‚   β”œβ”€β”€ OnlineMood.ts        # Cloud (Supabase) bookmark implementation
β”‚   β”‚   └── GustMood.ts          # Guest (SQLite) bookmark implementation
β”‚   β”œβ”€β”€ constant/
β”‚   β”‚   β”œβ”€β”€ main.ts              # Global constants (regions, default sections)
β”‚   β”‚   └── interfaces.ts        # Centralized TypeScript types & interfaces
β”‚   β”œβ”€β”€ components/
β”‚   β”‚   β”œβ”€β”€ Navbar.tsx           # Bottom navigation bar
β”‚   β”‚   β”œβ”€β”€ Banner.tsx           # Home trending hero carousel
β”‚   β”‚   β”œβ”€β”€ section.tsx          # Horizontal content rails (home)
β”‚   β”‚   β”œβ”€β”€ ExploreCard.tsx      # Card for Explore grid results
β”‚   β”‚   β”œβ”€β”€ Skeleton.tsx         # Pulse loading skeletons
β”‚   β”‚   β”œβ”€β”€ ShowTrailer.tsx      # YouTube trailer modal
β”‚   β”‚   β”œβ”€β”€ StreamModel.tsx      # Watch Now / streaming modal
β”‚   β”‚   β”œβ”€β”€ ImageViewer.tsx      # Full-screen image viewer
β”‚   β”‚   β”œβ”€β”€ BookmarkModel.tsx    # Bookmark button & status selector
β”‚   β”‚   └── Cards/
β”‚   β”‚       β”œβ”€β”€ BookmarkCard.tsx # Card for bookmark list
β”‚   β”‚       β”œβ”€β”€ CastCard.tsx     # Actor/cast avatar card
β”‚   β”‚       β”œβ”€β”€ MovieCard.tsx    # Reusable card for movies/TV
β”‚   β”‚       β”œβ”€β”€ ProvidersCards.tsx # Card for streaming providers
β”‚   β”‚       └── TvSeasonCard.tsx # Card for individual TV seasons
β”‚   β”œβ”€β”€ lib/
β”‚   β”‚   β”œβ”€β”€ generateMovieAvatar.ts # Fallback avatar SVG generator
β”‚   β”‚   β”œβ”€β”€ getRegion.ts         # IP-based region detection
β”‚   β”‚   β”œβ”€β”€ hash.ts              # Hashing utilities
β”‚   β”‚   └── slugify.ts           # String slugification utilities
β”‚   β”œβ”€β”€ pages/
β”‚   β”‚   β”œβ”€β”€ Home.tsx             # Main discovery feed (trending & rails)
β”‚   β”‚   β”œβ”€β”€ Explore.tsx          # Search & filters (movies/TV)
β”‚   β”‚   β”œβ”€β”€ Bookmark.tsx         # Saved library (guest & account)
β”‚   β”‚   β”œβ”€β”€ Profile.tsx          # User account & settings
β”‚   β”‚   β”œβ”€β”€ Provider/
β”‚   β”‚   β”‚   β”œβ”€β”€ Providers.tsx    # List of streaming providers
β”‚   β”‚   β”‚   └── [ProviderId].tsx # Movies/TV by provider
β”‚   β”‚   β”œβ”€β”€ reviews/
β”‚   β”‚   β”‚   └── [movieID].tsx    # User reviews for movies/TV
β”‚   β”‚   β”œβ”€β”€ moviedetails/
β”‚   β”‚   β”‚   └── [movieID].tsx    # Movie details screen
β”‚   β”‚   β”œβ”€β”€ tvdetails/
β”‚   β”‚   β”‚   β”œβ”€β”€ [tvID].tsx       # TV show details screen
β”‚   β”‚   β”‚   └── season/
β”‚   β”‚   β”‚       └── [...slug].tsx # TV season details screen
β”‚   β”‚   β”œβ”€β”€ actordata/
β”‚   β”‚   β”‚   β”œβ”€β”€ [actorID].tsx    # Actor profile details
β”‚   β”‚   β”‚   └── Filmography.tsx  # Actor filmography grid
β”‚   β”‚   β”œβ”€β”€ player/
β”‚   β”‚   β”‚   └── [player].tsx     # Embedded WebView player
β”‚   β”‚   └── account/
β”‚   β”‚       β”œβ”€β”€ login.tsx        # Login screen
β”‚   β”‚       β”œβ”€β”€ register.tsx     # Registration screen
β”‚   β”‚       β”œβ”€β”€ confirm.tsx      # Email OTP confirmation
β”‚   β”‚       └── resetPassword.tsx # Password reset (OTP + new password)
β”‚   └── store/
β”‚       └── store.ts             # Zustand global state & config
β”œβ”€β”€ assets/
β”‚   β”œβ”€β”€ fonts/                   # Custom fonts
β”‚   └── images/                  # App icons & artwork
└── README.md                    # This file

πŸš€ Getting Started

Prerequisites

Installation

  1. Clone & Install

    git clone https://github.com/Abdo-omran2206/Movie-Night-App.git
    cd Movie-Night-App
    npm install
  2. Configure Environment

    Create a .env file in the root directory:

    SUPABASE_URL=your_supabase_project_url
    SUPABASE_ANON_KEY=your_supabase_anon_key
    TMDB_API_KEY=your_tmdb_api_key
  3. Launch

    npx expo start

    Then press:

    • a for Android
    • i for iOS
    • w for Web

πŸ“– Documentation

  • Product Requirements: see prd.md for detailed product and feature specifications
  • Supabase Setup - Official Supabase documentation
  • Expo Docs - Expo framework documentation
  • TMDB API - The Movie Database API reference

πŸ”§ Configuration Management

The app supports remote configuration for:

  • βœ… Version enforcement (force updates)
  • βœ… Maintenance mode
  • βœ… Dynamic share messages for movies, TV shows, seasons, and actors
  • βœ… Configurable URLs and slugs (movie, TV, actor, base URL)
  • βœ… App store update links

Configuration is stored in the Supabase app_config table and consumed via the in-app ConfigManager and global store.


πŸ“ˆ Versioning

Current Stable Release: 2.8.7

Version management is handled through Supabase configuration:

  • min_app_version: Minimum required version (blocks older versions)
  • latest_app_version: Latest available version (shows update alert)
  • force_stop: Emergency maintenance mode

🀝 Contributing

This project is currently private. For collaboration inquiries, please contact the team.


πŸ“„ License

This project is private and proprietary.
Β© 2026 Movie Night Team. All rights reserved.


πŸ‘₯ Team

Developed with ❀️ by the Movie Night Team


πŸ™ Acknowledgments

  • The Movie Database (TMDB) for the comprehensive movie API
  • Supabase for backend and authentication services
  • Expo for the amazing React Native framework
  • All open-source contributors whose libraries made this possible

About

Welcome to Movie Night - your ultimate companion for discovering and tracking movies and TV shows! This modern mobile application is built with React Native and Expo, offering a premium experience for movie enthusiasts.

Topics

Resources

Stars

Watchers

Forks

Contributors