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.
| 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 |
| 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 |
| Technology | Purpose |
|---|---|
| Python 3 | Recommendation script runtime |
| pandas | Data manipulation |
| scikit-learn | Similarity computation (cosine similarity) |
| Service | Purpose |
|---|---|
| TMDB API | Movie data, images, cast & crew info |
The project includes a Content-Based Recommendation System under Recommendation_system/.
export_data.pyloads pre-trained pickled data (movies_dict.pkl+similarity.pkl).- For each movie, it computes the top 5 most similar movies using a cosine similarity matrix.
- Results are exported as a static
src/recommendations.jsonfile consumed by the React frontend.
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.
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)
-
Clone the repository:
git clone <repository-url> cd Flex-Watch
-
Install dependencies:
npm install
-
Set up environment variables:
Create a
.envfile in the project root:REACT_APP_API_KEY=your_tmdb_api_key_here
Get a free API key at themoviedb.org.
-
Start the development server:
npm start
The app will open at http://localhost:3000.
cd Recommendation_system
pip install pandas scikit-learn
python export_data.pyThis will regenerate src/recommendations.json from the pickle files.
| 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) |
The app uses a custom dark theme defined in tailwind.config.js:
- Dark palette: Deep navy/charcoal tones (
#050709β#718096) - Accent gold:
#f5c518with hover/glow states - Accent red:
#e50914for CTAs - Font: Inter (Google Fonts)
- Animations: Fade-in, slide-up, and pulse-glow keyframes
- Fork the repository
- Create a feature branch (
git checkout -b feature/amazing-feature) - Commit your changes (
git commit -m 'Add amazing feature') - Push to the branch (
git push origin feature/amazing-feature) - Open a Pull Request
This project is for educational and personal use.
Detailed project documentation is available in /docs, including setup, architecture, and feature walkthrough guides.
Made with β€οΈ using React & Tailwind CSS