CinePlay Hub is your ultimate streaming companion that aggregates content from various streaming services. It provides a seamless interface to browse and watch your favorite movies and TV shows, powered by the TMDB API.
- 🎬 Browse movies and TV shows with a modern, responsive interface
- 🔍 Powerful search functionality across multiple content types
- 📱 Mobile-friendly design with touch gestures support
- 🎯 Category-based browsing for easy content discovery
- 💾 Personal watchlist to save your favorite content
- 📢 Configurable announcement banner for important updates
- 🌙 Beautiful UI with smooth animations and transitions
- ⚡ Fast and responsive performance with React and Vite
- Node.js 16.x or higher
- npm 7.x or higher
- A TMDB API key (Get one here)
# Step 1: Clone the repository
git clone <YOUR_GIT_URL>
# Step 2: Navigate to the project directory
cd cineplay-hub
# Step 3: Install dependencies
npm install
# Step 4: Set up environment variables
cp .env.example .env
# Edit .env and add your TMDB API key
# Step 5: Start the development server
npm run dev
- Get your TMDB API key from TMDB's website
- Copy
.env.example
to.env
- Replace
your_tmdb_api_key_here
with your actual API key
This project leverages modern web technologies for optimal performance and developer experience:
- Vite - Next-generation frontend tooling
- TypeScript - Type-safe JavaScript
- React - UI component library
- shadcn/ui - Beautiful and accessible components
- Tailwind CSS - Utility-first CSS framework
- React Query - Data fetching and caching
- Framer Motion - Smooth animations
- React Router - Client-side routing
The project can be deployed to various hosting platforms. Here are detailed instructions for popular options:
- Fork this repository
- Import your fork to Vercel
- Set up environment variables
- Deploy!
- Fork this repository
- Connect your fork to Netlify
- Configure build settings:
- Build command:
npm run build
- Publish directory:
dist
- Build command:
- Set up environment variables
- Deploy!
- Update
vite.config.ts
with your base URL - Run
npm run build
- Deploy the
dist
directory
- Install Firebase CLI:
npm install -g firebase-tools
- Login:
firebase login
- Initialize:
firebase init hosting
- Deploy:
firebase deploy
The site includes a configurable announcement banner that can be updated without redeploying the application. The banner configuration is stored in public/config/announcement.json
:
{
"enabled": true, // Set to false to hide the banner
"message": "Your message here",
"link": "/optional/url", // Optional URL when banner is clicked
"backgroundColor": "#2B8CBE",
"textColor": "#FFFFFF"
}
To update the banner:
- Edit
public/config/announcement.json
with your desired configuration - Deploy the changes to your hosting platform
- Users will see the updated banner within 1 hour (configurable cache duration)
Note: Users can dismiss the banner by clicking the close button. The dismissal state is stored in their browser's local storage.
We welcome contributions to CinePlay Hub! Here's how you can help:
- Fork the repository
- Create a new branch (
git checkout -b feature/improvement
) - Make your changes
- Commit your changes (
git commit -am 'Add new feature'
) - Push to the branch (
git push origin feature/improvement
) - Create a Pull Request
Please make sure to:
- Follow the existing code style
- Add tests if applicable
- Update documentation as needed
- Follow the Code of Conduct
- Use TypeScript for all new code
- Follow the existing component structure
- Use shadcn/ui components when possible
- Add proper error handling
- Keep bundle size in mind
- Write meaningful commit messages
This project is licensed under the MIT License - see the LICENSE file for details.
We are committed to fostering an open and welcoming environment. Please read our Code of Conduct for details on our code of conduct and the process for submitting pull requests to us.
If you encounter any issues or have questions:
- Check the Issues page for existing problems
- Review the Documentation (if available)
- Create a new issue if your problem isn't already listed
- Provide as much detail as possible:
- Node.js version
- npm version
- Browser and version
- Error messages
- Steps to reproduce
- Expected vs actual behavior