A modern, open-source YouTube client built with React that enables Picture-in-Picture mode for any YouTube video, along with easy playlist management and video history tracking.
- π― Picture-in-Picture Support: Watch YouTube videos in PiP mode while browsing other content
- π Google Account Integration: Access your YouTube playlists and watch history
- π± Responsive Design: Works on desktop and mobile browsers
- π― Zero Ads: Clean, distraction-free video watching experience
- π Playlist Management: Browse and play videos from your playlists
- π Watch History: Keep track of your viewing history
- π Watch Later: Manage your Watch Later list
- Visit YouTube Free PiP
- Sign in with your Google account
- Paste a YouTube video URL or select from your playlists
- Click the Picture-in-Picture button to watch in floating mode
- Node.js (v18 or higher)
- npm or yarn
- Google Cloud Console account
- Clone the repository:
git clone https://github.com/killerwolf/youtube-free-pip.git
cd youtube-free-pip
- Install dependencies:
npm install
- Create a
.env
file from the example:
cp .env.example .env
-
Set up Google OAuth credentials:
- Go to Google Cloud Console
- Create a new project or select an existing one
- Enable the YouTube Data API v3
- Create OAuth 2.0 credentials
- Add these authorized URIs:
- JavaScript origins:
http://localhost:5173
- Redirect URIs:
http://localhost:5173/auth/callback
- JavaScript origins:
- Copy the credentials to your
.env
file:VITE_GOOGLE_CLIENT_ID
VITE_GOOGLE_CLIENT_SECRET
VITE_GOOGLE_API_KEY
-
Start the development server:
npm run dev
npm run dev
- Start development servernpm run build
- Build for production (includes type checking)npm run preview
- Preview production buildnpm run lint
- Run Biome checksnpm run format
- Format code with Biomenpm run type-check
- Run TypeScript type checkingnpm run ci
- Run all checks (types, lint, build)
src/
βββ components/ # React components
β βββ auth/ # Authentication components
β βββ youtube/ # YouTube integration components
βββ utils/ # Utility functions
βββ App.tsx # Main application component
We welcome contributions! Here's how you can help:
- Fork the repository
- Create a feature branch:
git checkout -b feature/your-feature-name
- Make your changes
- Run all checks:
npm run ci
- Commit your changes:
git commit -m 'Add some feature'
- Push to your branch:
git push origin feature/your-feature-name
- Create a Pull Request
Your Pull Request will automatically trigger our CI pipeline which runs:
- TypeScript type checking
- Biome linting and formatting checks
- Build verification
We use Biome for linting and formatting. Please ensure your code follows our style guide by running:
npm run format
npm run lint
- Comment your code where necessary
- Update the README if you add new features or change existing ones
- Add JSDoc comments for exported functions and components
- Built with React 18 and TypeScript
- Uses Vite for fast development and building
- Styled with Tailwind CSS
- YouTube Data API v3 integration
- Google OAuth 2.0 authentication
- Picture-in-Picture Web API
This project is open source and available under the MIT License.