CINEWorld is a full-stack entertainment platform for discovering movies, web series, anime, and dramas in one place.
Browse trending titles, search across different categories, explore detailed movie and TV pages, save favorites, build a watchlist, and manage your account through a clean streaming-style interface.
Live Demo: https://cineworld-eta.vercel.app/
CINEWorld was built to bring different kinds of entertainment into one place.
Instead of switching between separate platforms for movies, anime, dramas, and web series, users can browse and search everything through a single interface.
Movie and TV data comes from TMDB, authentication is handled by Supabase, the backend runs on Flask, and user favorites and watchlists are stored in Neon PostgreSQL.
- Movies: Browse trending, popular, top-rated, and upcoming movies.
- Web Series: Discover popular TV shows and streaming series.
- Anime: Dedicated section for anime content.
- Korean Dramas: Browse Korean drama titles.
- Trending Now: See currently trending movies and shows.
- Search: Search movies, anime, dramas, and web series directly from the navbar.
- Live Search Suggestions: Suggestions with poster, title, year, rating, and media type.
- Movie & TV Details: Dedicated pages for individual titles.
- Favorites: Save movies and shows you like.
- Watchlist: Save titles you want to watch later.
- User Accounts: Register, login, logout, and email verification.
- Forgot Password: Request a password reset through email.
- Reset Password: Secure password recovery using Supabase.
- Persistent Data: Favorites and watchlists stay saved across sessions.
- Responsive Design: Works across desktop, tablet, and mobile.
- Smooth Scrolling: Lenis-powered smooth scrolling.
- Cinematic Hero: Featured content with changing artwork and blended backgrounds.
- Content Rows: Horizontal movie and show sections with navigation arrows and edge fades.
- Global Footer: Shared responsive footer across the main application.
- React 19: Frontend UI
- Vite: Development server and production build
- React Router: Client-side routing
- Tailwind CSS: Styling
- Lenis: Smooth scrolling
- TMDB API: Movie and TV data
- Python: Backend language
- Flask: REST API
- SQLAlchemy: Database ORM
- Flask-CORS: CORS handling
- Supabase Auth: Authentication and sessions
- Neon PostgreSQL: Production database
- SQLite: Local development database
- Vercel: Frontend and backend deployment
cineworld/
├── api/
│ └── index.py
│
├── backend/
│ ├── app.py
│ ├── auth.py
│ ├── migrate.py
│ ├── models.py
│ └── requirements.txt
│
├── src/
│ ├── components/
│ ├── context/
│ ├── lib/
│ ├── pages/
│ ├── services/
│ ├── App.jsx
│ └── index.css
│
├── public/
├── android/
├── ios/
├── .env.example
├── package.json
├── requirements.txt
├── vercel.json
├── vite.config.js
└── README.md
Clone the repository:
git clone https://github.com/saiganesh-007/cineworld.git
cd cineworldInstall frontend dependencies:
npm installCreate a .env.local file:
VITE_SUPABASE_URL=your_supabase_project_url
VITE_SUPABASE_ANON_KEY=your_supabase_publishable_key
VITE_TMDB_API_KEY=your_tmdb_api_keyCreate a virtual environment:
python -m venv backend/venvActivate it:
.\backend\venv\Scripts\Activate.ps1Install backend dependencies:
pip install -r backend/requirements.txtCreate backend/.env:
SUPABASE_URL=your_supabase_project_url
SUPABASE_PUBLISHABLE_KEY=your_supabase_publishable_keyCINEWorld uses two terminals during development.
npm run devUsually runs at:
http://localhost:5173
Open another terminal:
.\backend\venv\Scripts\Activate.ps1
$env:PYTHONPATH = (Get-Location).Path
python -m backend.appBackend runs at:
http://127.0.0.1:5001
Vite automatically proxies /api requests to Flask during local development.
Authentication is handled using Supabase.
CINEWorld currently supports:
- Registration
- Email verification
- Login
- Logout
- Forgot password
- Reset password
- Persistent user sessions
Favorites and watchlists are linked to the authenticated user.
Users can save movies and shows to personal collections.
GET /api/me/favorites
POST /api/me/favorites
DELETE /api/me/favorites/:tmdb_id
GET /api/me/watchlist
POST /api/me/watchlist
DELETE /api/me/watchlist/:tmdb_id
Saved items are stored in PostgreSQL and remain available across sessions.
Local development uses SQLite:
backend/instance/cineworld.db
Production uses Neon PostgreSQL.
Main tables:
user
favorite
watchlist
CINEWorld is deployed on Vercel.
Live: https://cineworld-eta.vercel.app/
The Vite frontend and Flask backend are deployed together, with the backend exposed through:
api/index.py
Production database is hosted on Neon PostgreSQL and authentication is handled by Supabase.
- Movie trailers
- Continue Watching
- Recently Viewed
- User ratings
- Reviews
- Genre filters
- Better recommendations
- User profile page
- Personalized homepage
- PWA support
- Performance improvements
- TMDB — Movie and TV data
- Supabase — Authentication
- Neon — PostgreSQL database
- Vercel — Hosting and deployment
- React — Frontend
- Vite — Build tooling
- Flask — Backend
CINEWorld uses movie and television data provided by TMDB.
This product uses the TMDB API but is not endorsed or certified by TMDB.
Sai Ganesh
- GitHub: @saiganesh-007
- LinkedIn: Sai Ganesh
Shahid
- GitHub: @shahidyellow22-codehub
Built by Sai Ganesh & Shahid
Movies. Anime. Dramas. Web Series. One place.