A modern streaming platform built with React, TypeScript, and Firebase, featuring movies, TV shows, and sports content with PWA support.
- π¬ Stream movies and TV shows
- β½ Live sports streaming
- π― Personalized watch history and recommendations
- π Advanced search functionality
- π± Progressive Web App (PWA) support
- π User preferences with customizable accent colours
- π Firebase authentication and real-time data
- πΊ Multi-source streaming support
- π± Responsive design for all devices
-
Frontend:
- React 18.x
- TypeScript 5.9.x
- Vite 7.x
- TailwindCSS 4.x
- Radix UI Components
- Framer Motion
- React Query (installed but not used)
-
Backend & Services:
- Firebase 12.x (Authentication, Firestore, Analytics)
- Supabase (not currently used - only localStorage utilities in codebase)
Note: Several dependencies are installed but unused and should be removed in a future cleanup: @supabase/supabase-js, @tanstack/react-query, axios, date-fns, next-themes, web-vitals, @google/generative-ai, @google/genai
- Development & Build Tools:
- ESLint 9.x
- PostCSS
- TypeScript
- Vite PWA Plugin
- Node.js 20.19+ or 22.12+ (required for Vite 7 and Firebase 12) - Check with
node --version - npm or yarn
- Firebase account and project
- Supabase account and project (not currently used in codebase)
- Clone the repository
- Install dependencies:
npm install- Create a
.envfile based on.env.exampleand fill in your Firebase credentials:
# Firebase Configuration
VITE_FIREBASE_API_KEY=your_api_key_here
VITE_FIREBASE_AUTH_DOMAIN=your_project.firebaseapp.com
VITE_FIREBASE_PROJECT_ID=your_project_id
VITE_FIREBASE_STORAGE_BUCKET=your_project.appspot.com
VITE_FIREBASE_MESSAGING_SENDER_ID=your_sender_id
VITE_FIREBASE_APP_ID=your_app_id
VITE_FIREBASE_MEASUREMENT_ID=G-XXXXXXXXXX
Note: These values come from Firebase Console > Project Settings > General
Run the development server:
npm run devBuild for production:
npm run buildPreview production build:
npm run previewNote: Ensure you're using Node.js 20.19+ or 22.12+. Check with
node --version
Run all verification checks before committing:
npm run verifyThis runs TypeScript type checking, linting, and production build.
Run individual checks:
# Type checking
npm run tsc
# Linting
npm run lint
# Production build
npm run build
# Formatting check (placeholder - Prettier not configured)
npm run format:check
# Test coverage (placeholder - No test framework configured)
npm run test:coverageNote: The
format:checkandtest:coveragescripts are temporary placeholders. The project currently does not have Prettier for code formatting or a test framework (such as Vitest) configured. These will be added in future updates.
Currently, there are no automated tests in the codebase. However, the CI workflow includes runtime error checking using Playwright to catch any JavaScript runtime errors during page load.
For comprehensive testing, manual testing should be performed using the TESTING_CHECKLIST.md file after major updates.
Future improvements should include adding Vitest for unit testing and React Testing Library for component testing.
- Click the "Deploy to Netlify" button above
- Connect your GitHub repository
- Configure your environment variables in Netlify's dashboard
- Your site will be automatically deployed
- Click the "Deploy to Cloudflare Pages" button above
- Connect your GitHub repository
- Configure the build settings:
- Build command:
npm run build - Build output directory:
dist - Node.js version:
20.x(or20.19+)
- Build command:
- Add your environment variables in the Pages settings
- Your site will be automatically deployed
/src- Main application source code/components- Reusable React components/contexts- React context providers/hooks- Custom React hooks/lib- Utility libraries and configurations/pages- Application pages/routes/utils- Helper functions and type definitions
- User signup/login with Firebase Authentication
- Protected routes for authenticated users
- User profile management
- Multiple streaming sources support
- HD quality indicators
- Continuous playback
- Watch history tracking
- Firebase Authentication: User management and authentication
- Cloud Firestore: Data persistence for watch history, favorites, and watchlist
- Firebase Analytics: Usage tracking and analytics
- Supabase: Not currently used (only localStorage utilities exist in the codebase - see
src/utils/supabase.ts)
- Live sports events
- Multiple stream qualities
- Real-time updates
- Sports categories and filtering
- Offline support
- Install prompt
- Service worker caching
- Push notifications (planned)
- Custom accent colors
- Watch history
- Favorites list
- Watch later list
Several dependencies were manually updated beyond the recommended versions in the migration guide:
- React Router v7 (recommended v6) - potential breaking changes with import paths and future flags
- recharts v3 (recommended v2) - potential breaking changes with tooltip typing and component props
- react-day-picker v9 (recommended v8) - potential breaking changes with controlled props and class names
- Zod v4 (not used in codebase) - no impact as no schemas exist
These manual updates may introduce compatibility issues that require additional testing.
- 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 for educational demonstration purposes.
See Privacy Policy for details about data collection and usage.