Skip to content

Deepesh70/Flex-Watch

Folders and files

NameName
Last commit message
Last commit date

Latest commit

Β 

History

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

Repository files navigation

🎬 Flex-Watch β€” Movie Booking & Discovery Platform

A responsive, feature-rich movie booking interface inspired by BookMyShow, built with React 19 and Tailwind CSS. Browse trending movies, explore detailed cast & crew info, and receive ML-powered movie recommendations β€” all in a sleek, dark-themed UI.


✨ Features

Feature Description
🏠 Home Page Hero carousel, trending movies, and entertainment event cards
πŸŽ₯ Movie Details Full movie info β€” synopsis, cast, crew, ratings, and more
🎭 Plays & Events Dedicated section for live plays and entertainment events
πŸ€– ML Recommendations Content-based movie recommendations powered by a Python ML pipeline
πŸ“± Responsive Design Fully responsive across desktop, tablet, and mobile viewports
πŸŒ™ Dark Theme Premium dark UI with gold accent colors and smooth animations

πŸ› οΈ Tech Stack

Frontend

Technology Version Purpose
React 19 UI framework
Tailwind CSS 3.4 Utility-first styling
React Router 7 Client-side routing
Axios 1.13 HTTP client for TMDB API
React Slick 0.31 Carousel / slider components
React Icons 5.5 Icon library
Headless UI 2.2 Accessible UI primitives

Machine Learning

Technology Purpose
Python 3 Recommendation script runtime
pandas Data manipulation
scikit-learn Similarity computation (cosine similarity)

API

Service Purpose
TMDB API Movie data, images, cast & crew info

🧠 Machine Learning Integration

The project includes a Content-Based Recommendation System under Recommendation_system/.

How It Works

  1. export_data.py loads pre-trained pickled data (movies_dict.pkl + similarity.pkl).
  2. For each movie, it computes the top 5 most similar movies using a cosine similarity matrix.
  3. Results are exported as a static src/recommendations.json file consumed by the React frontend.

Limitations

Note

  • Recommendations only work for movies present in the training dataset (~4,800 movies).
  • Movie title matching is case-sensitive and exact-match based.
  • To update recommendations, re-run the Python script after updating the pickle files.

πŸ“ Project Structure

Flex-Watch/
β”œβ”€β”€ public/                     # Static assets
β”œβ”€β”€ src/
β”‚   β”œβ”€β”€ components/
β”‚   β”‚   β”œβ”€β”€ CategoryFilter/     # Genre / category filtering
β”‚   β”‚   β”œβ”€β”€ Entertainement/     # Entertainment event cards
β”‚   β”‚   β”œβ”€β”€ FeaturedMovie/      # Featured movie spotlight
β”‚   β”‚   β”œβ”€β”€ Footer/             # Site footer
β”‚   β”‚   β”œβ”€β”€ HeroCarousal/       # Hero banner carousel
β”‚   β”‚   β”œβ”€β”€ MovieHero/          # Movie detail hero section
β”‚   β”‚   β”œβ”€β”€ Navbar/             # Navigation bar
β”‚   β”‚   β”œβ”€β”€ PostSlider/         # Horizontal poster slider
β”‚   β”‚   β”œβ”€β”€ context/            # React context providers
β”‚   β”‚   └── poster/             # Poster card component
β”‚   β”œβ”€β”€ layouts/
β”‚   β”‚   β”œβ”€β”€ Default.layout.jsx  # Default page layout
β”‚   β”‚   └── Movie.layout.jsx    # Movie detail page layout
β”‚   β”œβ”€β”€ pages/
β”‚   β”‚   β”œβ”€β”€ Home.page.jsx       # Home page
β”‚   β”‚   β”œβ”€β”€ Movie.page.jsx      # Movie detail page
β”‚   β”‚   └── play.page.jsx       # Plays & events page
β”‚   β”œβ”€β”€ recommendations.json    # ML-generated recommendations
β”‚   β”œβ”€β”€ App.js                  # Root component & routing
β”‚   β”œβ”€β”€ index.js                # Entry point
β”‚   └── index.css               # Global styles & Tailwind directives
β”œβ”€β”€ Recommendation_system/
β”‚   β”œβ”€β”€ export_data.py          # ML script to generate recommendations
β”‚   β”œβ”€β”€ movies_dict.pkl         # Pickled movie dataset
β”‚   └── similarity.pkl          # Pickled cosine similarity matrix
β”œβ”€β”€ tailwind.config.js          # Tailwind theme customization
β”œβ”€β”€ postcss.config.js           # PostCSS configuration
β”œβ”€β”€ package.json
└── .env                        # TMDB API key (not committed)

πŸš€ Getting Started

Prerequisites

Installation

  1. Clone the repository:

    git clone <repository-url>
    cd Flex-Watch
  2. Install dependencies:

    npm install
  3. Set up environment variables:

    Create a .env file in the project root:

    REACT_APP_API_KEY=your_tmdb_api_key_here

    Get a free API key at themoviedb.org.

  4. Start the development server:

    npm start

    The app will open at http://localhost:3000.

Regenerating ML Recommendations (optional)

cd Recommendation_system
pip install pandas scikit-learn
python export_data.py

This will regenerate src/recommendations.json from the pickle files.


πŸ“¦ Available Scripts

Command Description
npm start Run the dev server on port 3000
npm run build Create a production build in build/
npm test Run the test suite
npm run eject Eject from Create React App (irreversible)

🎨 Design System

The app uses a custom dark theme defined in tailwind.config.js:

  • Dark palette: Deep navy/charcoal tones (#050709 β†’ #718096)
  • Accent gold: #f5c518 with hover/glow states
  • Accent red: #e50914 for CTAs
  • Font: Inter (Google Fonts)
  • Animations: Fade-in, slide-up, and pulse-glow keyframes

🀝 Contributing

  1. Fork the repository
  2. Create a feature branch (git checkout -b feature/amazing-feature)
  3. Commit your changes (git commit -m 'Add amazing feature')
  4. Push to the branch (git push origin feature/amazing-feature)
  5. Open a Pull Request

πŸ“„ License

This project is for educational and personal use.


πŸ“š Additional Documentation

Detailed project documentation is available in /docs, including setup, architecture, and feature walkthrough guides.


Made with ❀️ using React & Tailwind CSS

About

No description, website, or topics provided.

Resources

Stars

0 stars

Watchers

0 watching

Forks

Releases

No releases published

Packages

 
 
 

Contributors