Skip to content

emreyn1/Movieon

Folders and files

NameName
Last commit message
Last commit date

Latest commit

Β 

History

1 Commit
Β 
Β 
Β 
Β 
Β 
Β 
Β 
Β 
Β 
Β 
Β 
Β 
Β 
Β 
Β 
Β 
Β 
Β 
Β 
Β 
Β 
Β 
Β 
Β 
Β 
Β 
Β 
Β 
Β 
Β 

Repository files navigation

🎬 Movieon - Free Movies & TV Shows Streaming

🎬 Movieon

A modern, free streaming platform for movies and TV shows built with cutting-edge web technologies

GitHub stars GitHub forks GitHub watchers

Next.js React TypeScript Tailwind CSS Hero UI Supabase License

Features β€’ Demo β€’ Tech Stack β€’ Screenshots β€’ Getting Started

⭐ Star this repo if you find it useful!


πŸ“Έ Screenshots

Homepage

Homepage Modern homepage with trending movies, categories, and seamless browsing experience


✨ Features

🎬 Content Discovery

  • 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

πŸ“± User Experience

  • 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

πŸ‘€ Personal Features

  • 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

🎯 Content Management

  • 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

πŸ”§ Technical Features

  • 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

πŸ› οΈ Tech Stack


🌐 Demo

Live Demo: Visit Movieon

Note: Make sure to set up all environment variables for full functionality.


πŸ—οΈ Architecture Overview

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

πŸš€ Getting Started

Prerequisites

Make sure you have the following installed:

  • Node.js 18.x or higher (Download)
  • npm 10.x or higher (comes with Node.js)
  • Git (Download)

Installation

  1. Clone the repository
git clone https://github.com/emreyn1/movieon.git
cd movieon
  1. Install dependencies
npm install
  1. 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
  1. 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
  1. Run the development server
npm run dev

Open http://localhost:3000 in your browser to view the application.

Environment Variables Setup

For detailed instructions on setting up each service:


🎯 How to Use

Getting Started

  1. Visit the Application: Open the live demo or run locally
  2. Browse Content: Explore movies and TV shows on the homepage
  3. Search: Use the search bar to find specific content
  4. Sign Up: Create an account to access personal features
  5. Create Library: Add movies and shows to your watchlist
  6. Watch Content: Click on any movie/TV show to start watching

Key Features

  • 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

πŸš€ Performance

  • 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

πŸ”’ Security Features

  • βœ… 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

πŸ“ Project Structure

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

Available Scripts

# 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

Development Guidelines

  • 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

πŸš€ Deployment

Deploy to Vercel (Recommended)

The easiest way to deploy this Next.js app is using Vercel:

  1. Push your code to GitHub
git add .
git commit -m "Ready for deployment"
git push origin main
  1. 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)
  2. Add Environment Variables

    • Add all environment variables from your .env.local file
    • Make sure to add them for all environments (Production, Preview, Development)
  3. Deploy!

    • Click "Deploy"
    • Wait for the build to complete
    • Your app will be live at https://movieon.vercel.app

Environment Variables on Vercel

For detailed Vercel deployment instructions:


πŸ“ Important Notes

  • 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

πŸ”’ Privacy & Security

  • βœ… 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

🀝 Contributing

Contributions are welcome! Please feel free to submit a Pull Request.

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

πŸ“„ License

This project is licensed under the MIT License.


πŸ™ Acknowledgments

Built with amazing open-source technologies:


⭐ Like this project? Give it a star!

Star History Chart

Star this repo to show your support! ⭐


Built with ❀️ by Emre

About

🎬 Free Movie & TV Show Streaming Platform - Modern, Fast & Beautiful

Topics

Resources

License

Contributing

Stars

Watchers

Forks

Releases

No releases published

Packages

 
 
 

Contributors