A modern, free streaming platform for movies and TV shows built with cutting-edge web technologies
Features β’ Demo β’ Tech Stack β’ Screenshots β’ Getting Started
β Star this repo if you find it useful!
- Browse Movies & TV Shows: Explore a vast library of movies and TV shows with rich metadata
- Trending Content: Discover what's popular and trending in real-time
- Category Filtering: Browse by genres, popularity, ratings, and release dates
- Search Functionality: Powerful search to find movies, TV shows, actors, and genres
- Detailed Information: Comprehensive movie/TV show details with cast, crew, and trailers
- Responsive Design: Perfect experience on mobile, tablet, and desktop devices
- Light & Dark Mode: Seamless theme switching with system preference support
- Progressive Web App: Installable PWA with offline capabilities
- Smooth Navigation: Fast loading and intuitive user interface
- Modern UI: Glassmorphism effects and gradient backgrounds
- User Authentication: Secure login/signup with Supabase
- Personal Library: Create and manage your watchlist and favorites
- Watch History: Track what you've watched and continue where you left off
- User Profiles: Personalized experience with account management
- Bookmarks: Save movies and shows for later viewing
- Rich Metadata: Detailed information from TMDB API
- Video Playback: Integrated video player with multiple sources
- Image Galleries: High-quality posters, backdrops, and actor photos
- Ratings & Reviews: User ratings and community reviews
- Social Sharing: Share movies and TV shows with friends
- Type Safety: Full TypeScript support for reliable development
- Performance Optimized: Fast loading with code splitting and lazy loading
- SEO Friendly: Server-side rendering for better search engine visibility
- API Integration: Seamless integration with TMDB and Supabase
- Error Handling: Comprehensive error handling and user feedback
- Framework: Next.js 15 (App Router)
- UI Library: React 19
- Styling: Tailwind CSS 4
- Components: Hero UI 2.8 + Custom Components
- TypeScript: TypeScript 5
- State Management: TanStack Query for server state
- Database: Supabase for auth and data
- API: TMDB API for movie data
- Deployment: Vercel for hosting
Live Demo: Visit Movieon
Note: Make sure to set up all environment variables for full functionality.
This application is built with a modern, scalable architecture:
- Frontend: Next.js 15 with App Router, React 19 Server Components, TypeScript
- Backend: Next.js API Routes (serverless functions)
- Database: Supabase with PostgreSQL and real-time subscriptions
- Authentication: Supabase Auth with email/password and social login
- Content API: TMDB API for movie and TV show data
- State Management: React Hooks + TanStack Query
- Styling: Tailwind CSS with custom design system
- Deployment: Vercel for global CDN and edge functions
Make sure you have the following installed:
- Clone the repository
git clone https://github.com/emreyn1/movieon.git
cd movieon- Install dependencies
npm install- Set up environment variables
Create a .env.local file in the root directory:
# TMDB API
TMDB_API_KEY=your_tmdb_api_key
# Supabase
NEXT_PUBLIC_SUPABASE_URL=your_supabase_url
NEXT_PUBLIC_SUPABASE_ANON_KEY=your_supabase_anon_key
SUPABASE_SERVICE_ROLE_KEY=your_supabase_service_role_key
# NextAuth (Optional)
NEXTAUTH_SECRET=your_nextauth_secret
NEXTAUTH_URL=http://localhost:3000- Set up Supabase
# Install Supabase CLI
npm install -g supabase
# Login to Supabase
supabase login
# Link to your project
supabase link --project-ref your-project-ref
# Push database schema
supabase db push- Run the development server
npm run devOpen http://localhost:3000 in your browser to view the application.
For detailed instructions on setting up each service:
- π TMDB API Setup
- π Supabase Setup
- π Environment Variables
- Visit the Application: Open the live demo or run locally
- Browse Content: Explore movies and TV shows on the homepage
- Search: Use the search bar to find specific content
- Sign Up: Create an account to access personal features
- Create Library: Add movies and shows to your watchlist
- Watch Content: Click on any movie/TV show to start watching
- Browse Categories: Explore trending, popular, top-rated content
- Detailed Pages: View comprehensive information about movies and shows
- User Dashboard: Manage your watchlist, favorites, and history
- Responsive Player: Watch content with an integrated video player
- Social Features: Share and discuss content with other users
- Fast Loading: Optimized bundle size with code splitting
- Server Components: React Server Components for better performance
- Image Optimization: Next.js Image component for optimized images
- Caching: TanStack Query for efficient data caching
- SEO: Server-side rendering for better search visibility
- PWA: Installable app with offline capabilities
- β Secure Authentication: Supabase Auth with JWT tokens
- β Input Validation: Form validation and data sanitization
- β API Security: Secure API routes with authentication
- β Type Safety: Full TypeScript support for security
- β Environment Variables: Secure handling of sensitive data
- β HTTPS: Secure connections with SSL certificates
movieon/
βββ app/ # Next.js App Router
β βββ (root)/ # Main route group
β β βββ page.tsx # Homepage
β β βββ movie/ # Movie routes
β β β βββ [id]/ # Movie detail page
β β βββ tv/ # TV show routes
β β β βββ [id]/ # TV show detail page
β β βββ search/ # Search page
β β βββ library/ # User library
β β βββ auth/ # Authentication pages
β βββ api/ # API routes
β β βββ auth/ # Supabase auth routes
β βββ layout.tsx # Root layout
β βββ globals.css # Global styles
βββ components/ # React components
β βββ ui/ # Hero UI components
β βββ sections/ # Page sections
β β βββ Home/ # Homepage components
β β βββ Movie/ # Movie components
β β βββ TV/ # TV show components
β β βββ Auth/ # Auth components
β βββ layout/ # Layout components
β βββ other/ # Utility components
βββ lib/ # Utility functions
β βββ actions.ts # Server actions
β βββ utils.ts # Helper functions
β βββ constants.ts # App constants
β βββ parsers.ts # Data parsers
βββ hooks/ # Custom React hooks
β βββ useSupabaseUser.ts # User authentication
β βββ useFetchDiscoverMovies.ts # Movie discovery
β βββ useDeviceVibration.ts # Device features
βββ types/ # TypeScript types
β βββ index.ts # Main types
β βββ movie.ts # Movie types
β βββ component.ts # Component types
βββ utils/ # Utility modules
β βββ supabase/ # Supabase utilities
β βββ players.ts # Video player utilities
β βββ icons.ts # Icon utilities
β βββ helpers.ts # Helper functions
βββ public/ # Static assets
β βββ screenshots/ # Screenshots
β βββ icons/ # App icons
βββ next.config.ts # Next.js configuration
βββ tailwind.config.ts # Tailwind CSS configuration
βββ tsconfig.json # TypeScript configuration
# Development server
npm run dev
# Production build
npm run build
# Start production server
npm start
# Lint code
npm run lint
# Type checking
npm run type-check- Code Style: Follow the existing TypeScript and React patterns
- Component Structure: Use functional components with hooks
- Styling: Use Tailwind CSS classes and Hero UI components
- State Management: Use TanStack Query for server state
- Error Handling: Implement proper error boundaries
The easiest way to deploy this Next.js app is using Vercel:
- Push your code to GitHub
git add .
git commit -m "Ready for deployment"
git push origin main-
Import to Vercel
- Go to Vercel Dashboard
- Click "Add New Project"
- Import your GitHub repository
- Configure project settings:
- Framework Preset: Next.js
- Build Command:
npm run build - Output Directory: (leave empty)
-
Add Environment Variables
- Add all environment variables from your
.env.localfile - Make sure to add them for all environments (Production, Preview, Development)
- Add all environment variables from your
-
Deploy!
- Click "Deploy"
- Wait for the build to complete
- Your app will be live at
https://movieon.vercel.app
For detailed Vercel deployment instructions:
- TMDB API: You need a TMDB API key for movie data
- Supabase Setup: Database schema is included in the supabase folder
- Environment Variables: All environment variables must be set for functionality
- PWA Features: Service worker is configured for offline capabilities
- β Secure Authentication: Supabase Auth with secure tokens
- β No Tracking: No analytics or tracking by default
- β Data Privacy: User data stored securely in Supabase
- β API Security: Secure API calls with authentication
- β Environment Security: Sensitive data stored as environment variables
Contributions are welcome! Please feel free to submit a Pull Request.
- Fork the repository
- Create your feature branch (
git checkout -b feature/AmazingFeature) - Commit your changes (
git commit -m 'Add some AmazingFeature') - Push to the branch (
git push origin feature/AmazingFeature) - Open a Pull Request
This project is licensed under the MIT License.
Built with amazing open-source technologies:
- Next.js - The React Framework
- React - UI Library
- Tailwind CSS - Styling Framework
- Hero UI - UI Components
- Supabase - Backend as a Service
- TMDB - Movie Database API
- TypeScript - Type Safety
