{"id":49532452,"url":"https://github.com/arijit-06/nomoresubscription","last_synced_at":"2026-05-02T08:32:12.643Z","repository":{"id":323151964,"uuid":"1092259564","full_name":"arijit-06/nomoresubscription","owner":"arijit-06","description":"One day after getting tired from all the problematic subscription, I decided that it's enough. NoMoreSubsctiption.","archived":false,"fork":false,"pushed_at":"2025-11-21T18:34:47.000Z","size":148,"stargazers_count":0,"open_issues_count":0,"forks_count":0,"subscribers_count":0,"default_branch":"dev","last_synced_at":"2025-11-21T20:28:24.360Z","etag":null,"topics":["free","js","vercel"],"latest_commit_sha":null,"homepage":"https://nomoresubscription.vercel.app","language":"TypeScript","has_issues":true,"has_wiki":null,"has_pages":null,"mirror_url":null,"source_name":null,"license":null,"status":null,"scm":"git","pull_requests_enabled":true,"icon_url":"https://github.com/arijit-06.png","metadata":{"files":{"readme":"README.md","changelog":null,"contributing":null,"funding":null,"license":null,"code_of_conduct":null,"threat_model":null,"audit":null,"citation":null,"codeowners":null,"security":null,"support":null,"governance":null,"roadmap":null,"authors":null,"dei":null,"publiccode":null,"codemeta":null,"zenodo":null,"notice":null,"maintainers":null,"copyright":null,"agents":null,"dco":null,"cla":null}},"created_at":"2025-11-08T09:51:50.000Z","updated_at":"2025-11-21T18:30:30.000Z","dependencies_parsed_at":null,"dependency_job_id":null,"html_url":"https://github.com/arijit-06/nomoresubscription","commit_stats":null,"previous_names":["arijit-06/nomoresubscription"],"tags_count":0,"template":false,"template_full_name":null,"purl":"pkg:github/arijit-06/nomoresubscription","repository_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/arijit-06%2Fnomoresubscription","tags_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/arijit-06%2Fnomoresubscription/tags","releases_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/arijit-06%2Fnomoresubscription/releases","manifests_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/arijit-06%2Fnomoresubscription/manifests","owner_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/owners/arijit-06","download_url":"https://codeload.github.com/arijit-06/nomoresubscription/tar.gz/refs/heads/dev","sbom_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/arijit-06%2Fnomoresubscription/sbom","scorecard":null,"host":{"name":"GitHub","url":"https://github.com","kind":"github","repositories_count":286080680,"owners_count":32528216,"icon_url":"https://github.com/github.png","version":null,"created_at":"2022-05-30T11:31:42.601Z","updated_at":"2026-05-02T01:12:54.858Z","status":"online","status_checked_at":"2026-05-02T02:00:05.923Z","response_time":132,"last_error":null,"robots_txt_status":"success","robots_txt_updated_at":"2025-07-24T06:49:26.215Z","robots_txt_url":"https://github.com/robots.txt","online":true,"can_crawl_api":true,"host_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub","repositories_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories","repository_names_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repository_names","owners_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/owners"}},"keywords":["free","js","vercel"],"created_at":"2026-05-02T08:32:11.972Z","updated_at":"2026-05-02T08:32:12.620Z","avatar_url":"https://github.com/arijit-06.png","language":"TypeScript","funding_links":[],"categories":[],"sub_categories":[],"readme":"# Netflix Clone\n\nA pixel-perfect Netflix clone built with React, TypeScript, and modern web technologies. Features complete user authentication, profile management, content browsing, video playback, and watchlist functionality.\n\n## 🚀 Features\n\n- **Authentication System**\n  - Email/password signup and login\n  - Google OAuth integration\n  - Persistent sessions\n  - Protected routes\n\n- **Profile Management**\n  - Multiple user profiles (up to 5 per account)\n  - Custom avatars and names\n  - Age rating restrictions\n  - Profile switching\n\n- **Content Browsing**\n  - Hero banner with auto-rotating content\n  - Multiple content rows (Trending, Popular, etc.)\n  - Hover effects and animations\n  - Responsive design (mobile to 4K)\n\n- **Video Playback**\n  - Vidking API integration\n  - Progress tracking and resume\n  - Custom player controls\n  - Episode navigation for TV shows\n\n- **Watchlist \u0026 Progress**\n  - Add/remove content from watchlist\n  - Real-time sync across devices\n  - Continue watching functionality\n  - Progress persistence\n\n- **Search \u0026 Discovery**\n  - Real-time search with debouncing\n  - Filter by movies/TV shows\n  - Genre-based browsing\n  - Personalized recommendations\n\n## 🛠️ Tech Stack\n\n- **Frontend**: React 18, TypeScript, Vite\n- **Styling**: Styled Components, CSS Grid/Flexbox\n- **Routing**: React Router DOM v6\n- **State Management**: Context API + useReducer\n- **HTTP Client**: Axios\n- **Icons**: React Icons\n- **Authentication**: Firebase Auth\n- **Database**: Supabase\n- **Content API**: TMDB (The Movie Database)\n- **Video Player**: Vidking API\n\n## 📋 Prerequisites\n\nBefore running this project, you need to obtain API keys from:\n\n1. **TMDB API**: [https://www.themoviedb.org/settings/api](https://www.themoviedb.org/settings/api)\n2. **Firebase**: [https://console.firebase.google.com/](https://console.firebase.google.com/)\n3. **Supabase**: [https://supabase.com/dashboard](https://supabase.com/dashboard)\n\n## 🚀 Quick Start\n\n1. **Clone the repository**\n   ```bash\n   git clone \u003crepository-url\u003e\n   cd netflix-clone\n   ```\n\n2. **Install dependencies**\n   ```bash\n   npm install\n   ```\n\n3. **Set up environment variables**\n   ```bash\n   cp .env.example .env\n   ```\n   \n   Fill in your API keys in the `.env` file:\n   ```env\n   VITE_TMDB_API_KEY=your_tmdb_api_key_here\n   VITE_TMDB_BASE_URL=https://api.themoviedb.org/3\n   VITE_TMDB_IMAGE_BASE=https://image.tmdb.org/t/p\n\n   VITE_FIREBASE_API_KEY=your_firebase_key\n   VITE_FIREBASE_AUTH_DOMAIN=your_project.firebaseapp.com\n   VITE_FIREBASE_PROJECT_ID=your_project_id\n\n   VITE_SUPABASE_URL=your_supabase_url\n   VITE_SUPABASE_ANON_KEY=your_supabase_anon_key\n\n   VITE_VIDKING_BASE_URL=https://www.vidking.net/embed\n   ```\n\n4. **Set up Supabase database**\n   \n   Create the following tables in your Supabase project:\n\n   **profiles table:**\n   ```sql\n   CREATE TABLE profiles (\n     id UUID DEFAULT gen_random_uuid() PRIMARY KEY,\n     userid TEXT NOT NULL,\n     name TEXT NOT NULL,\n     avatar TEXT NOT NULL,\n     agerating TEXT NOT NULL CHECK (agerating IN ('kids', 'teen', 'adult')),\n     createdat TIMESTAMP WITH TIME ZONE DEFAULT NOW(),\n     updatedat TIMESTAMP WITH TIME ZONE DEFAULT NOW()\n   );\n   ```\n\n   **watchlist table:**\n   ```sql\n   CREATE TABLE watchlist (\n     id UUID DEFAULT gen_random_uuid() PRIMARY KEY,\n     userid TEXT NOT NULL,\n     profileid UUID REFERENCES profiles(id) ON DELETE CASCADE,\n     contentid INTEGER NOT NULL,\n     contenttype TEXT NOT NULL CHECK (contenttype IN ('movie', 'tv')),\n     addedat TIMESTAMP WITH TIME ZONE DEFAULT NOW(),\n     UNIQUE(userid, profileid, contentid, contenttype)\n   );\n   ```\n\n   **viewing_progress table:**\n   ```sql\n   CREATE TABLE viewing_progress (\n     id UUID DEFAULT gen_random_uuid() PRIMARY KEY,\n     userid TEXT NOT NULL,\n     profileid UUID REFERENCES profiles(id) ON DELETE CASCADE,\n     contentid INTEGER NOT NULL,\n     contenttype TEXT NOT NULL CHECK (contenttype IN ('movie', 'tv')),\n     progress REAL NOT NULL DEFAULT 0,\n     duration REAL NOT NULL DEFAULT 0,\n     timestamp TIMESTAMP WITH TIME ZONE DEFAULT NOW(),\n     season INTEGER,\n     episode INTEGER,\n     completed BOOLEAN DEFAULT FALSE,\n     UNIQUE(userid, profileid, contentid, contenttype, season, episode)\n   );\n   ```\n\n5. **Configure Firebase Authentication**\n   - Enable Email/Password authentication\n   - Enable Google OAuth provider\n   - Add your domain to authorized domains\n\n6. **Start the development server**\n   ```bash\n   npm run dev\n   ```\n\n7. **Open your browser**\n   Navigate to `http://localhost:3000`\n\n## 📁 Project Structure\n\n```\nnetflix-clone/\n├── public/\n│   └── netflix-logo.svg\n├── src/\n│   ├── components/          # Reusable UI components\n│   │   ├── Auth/           # Authentication components\n│   │   ├── Browse/         # Content browsing components\n│   │   ├── Layout/         # Layout components\n│   │   ├── Player/         # Video player components\n│   │   ├── Profile/        # Profile management components\n│   │   └── Search/         # Search components\n│   ├── context/            # React Context providers\n│   ├── hooks/              # Custom React hooks\n│   ├── pages/              # Page components\n│   ├── services/           # API services\n│   ├── styles/             # Global styles and variables\n│   ├── types/              # TypeScript type definitions\n│   ├── utils/              # Utility functions\n│   └── App.tsx             # Main App component\n├── .env.example            # Environment variables template\n├── package.json            # Dependencies and scripts\n└── README.md              # Project documentation\n```\n\n## 🎨 Design System\n\nThe project uses a comprehensive design system with:\n\n- **Colors**: Netflix brand colors (red, black, grays)\n- **Typography**: Netflix Sans font family with responsive sizing\n- **Spacing**: Consistent spacing scale using CSS custom properties\n- **Components**: Reusable styled components with variants\n- **Animations**: Smooth transitions and hover effects\n- **Responsive**: Mobile-first design with breakpoints\n\n## 🔧 Available Scripts\n\n- `npm run dev` - Start development server\n- `npm run build` - Build for production\n- `npm run preview` - Preview production build\n- `npm run lint` - Run ESLint\n\n## 🚀 Deployment\n\n### Vercel (Recommended)\n\n1. Connect your GitHub repository to Vercel\n2. Add environment variables in Vercel dashboard\n3. Deploy automatically on push to main branch\n\n### Manual Deployment\n\n1. Build the project:\n   ```bash\n   npm run build\n   ```\n\n2. Deploy the `dist` folder to your hosting provider\n\n3. Configure your web server for SPA routing\n\n## 🧪 Testing Checklist\n\n- [ ] User registration and login\n- [ ] Profile creation and management\n- [ ] Content browsing and navigation\n- [ ] Video playback functionality\n- [ ] Watchlist add/remove operations\n- [ ] Search functionality\n- [ ] Responsive design on different devices\n- [ ] Cross-browser compatibility\n\n## 🤝 Contributing\n\n1. Fork the repository\n2. Create a feature branch\n3. Make your changes\n4. Test thoroughly\n5. Submit a pull request\n\n## 📄 License\n\nThis project is for educational purposes only. Netflix is a trademark of Netflix, Inc.\n\n## 🆘 Troubleshooting\n\n### Common Issues\n\n1. **API Key Errors**: Ensure all environment variables are correctly set\n2. **CORS Issues**: Check Firebase and Supabase domain configurations\n3. **Build Errors**: Clear node_modules and reinstall dependencies\n4. **Video Playback**: Verify Vidking API integration and content availability\n\n### Getting Help\n\n- Check the browser console for error messages\n- Verify API key permissions and quotas\n- Ensure database tables are created correctly\n- Test with different content IDs\n\n## 🔮 Future Enhancements\n\n- [ ] Offline content caching\n- [ ] Advanced recommendation algorithm\n- [ ] Social features (sharing, reviews)\n- [ ] Multiple language support\n- [ ] Download functionality\n- [ ] Parental controls\n- [ ] Analytics and metrics\n- [ ] Admin dashboard\n\n---\n\nBuilt with ❤️ using modern web technologies","project_url":"https://awesome.ecosyste.ms/api/v1/projects/github.com%2Farijit-06%2Fnomoresubscription","html_url":"https://awesome.ecosyste.ms/projects/github.com%2Farijit-06%2Fnomoresubscription","lists_url":"https://awesome.ecosyste.ms/api/v1/projects/github.com%2Farijit-06%2Fnomoresubscription/lists"}