BingeTube
Binge YouTube the right way with BingeTube. Watch videos in order, skip repeats, and finally finish series without getting lost.
Install / Use
/learn @mohansella/BingeTubeREADME
BingeTube
Transform YouTube browsing into a binge-watching experience — watch channels like TV series, organized and distraction-free.
BingeTube is a cross-platform Flutter application that lets you watch YouTube channels sequentially — from first to last — without re-watching videos you’ve already seen. It organizes YouTube content into curated collections with intelligent tracking, turning endless scrolling into a focused, series-like viewing experience.
🎯 What Makes BingeTube Different?
YouTube is powerful but unorganized. BingeTube solves this:
| Challenge | YouTube | BingeTube | |-----------|---------|----------| | Watch channels in order | ❌ Newest first, confusing | ✅ Oldest→Newest or customise, episodic | | Skip already-watched videos | ❌ Manual, tedious | ✅ Automatic tracking | | Progress tracking | ❌ No sense of completion | ✅ Visual progress & stats | | Collections | ❌ Basic playlists | ✅ Curated, organized binges |
✨ Key Features
🎬 Smart Binge-Watching
- Sequential playback — Watch channels from first to last video
- Watch tracking — Mark videos as watched/unwatched; never lose your place
- Auto-skip — Automatically skip previously watched videos
- Progress insight — See how much of a series you’ve watched
📚 Collections & Organization
- Curated collections — Pre-built, tagged collections (no API key needed)
- Channel browsing — Explore and add channels to your library
- Series organization — Group related channels into binges
- Custom binges — Create and manage your own watch lists
🔧 Advanced Capabilities
- YouTube API integration — Optional: use your own API key for unlimited browsing
- Search functionality — Find channels and playlists with ease
- API quota display — Monitor your YouTube API usage in real-time
- Profile management — Personalize app settings and preferences
🌍 Cross-Platform Excellence
- Mobile (iOS/Android) — Native performance and mobile optimizations
- Desktop (macOS/Windows/Linux) — Full-featured desktop experience
- Web — Demo and full-featured web version with deep linking
- Dark mode — Automatic and manual theme support
- Responsive UI — Adapted for all screen sizes
📊 User Experience
- Configurable font sizes — Accessibility for all users
- Splash screen — Smart initialization with session persistence
- Deep linking — Direct access to channels and series via URLs
- SEO compatible — Discovery and sharing-friendly web routing
- Smooth transitions — Optimized animations and navigation
🛠 Tech Stack
Core Framework
State Management & Navigation
- Hooks Riverpod — Modern, reactive state management
- GoRouter — Declarative routing with deep linking & named routes
Database & Persistence
- Drift — Reactive database abstraction layer (SQL)
- Flutter Secure Storage — Encrypted local storage for API keys
- Path Provider — Cross-platform file system access
API & Networking
- http — HTTP client for REST APIs
- YouTube Data API v3 — Official YouTube API
Analytics & Monitoring
- Firebase Analytics — User behavior tracking
- Firebase Crashlytics — Error monitoring & crash reporting
UI & UX Enhancements
- Lottie — Smooth JSON animations
- URL Launcher — External link handling
- ReadMore — Expandable text descriptions
- Cupertino Icons — iOS-style icons
Utilities
- TimeAgo Flutter — Human-readable timestamps
- Package Info Plus — App version management
- Archive — Cross-platform compression
- File Picker — Native file selection
- Crypto — Secure hashing utilities
Web Platform
- Flutter Web — Web runtime
- Flutter InAppWebView — Custom web view for video playback
- Super Drag and Drop — Cross-platform drag-drop
- Super Clipboard — Advanced clipboard operations
🚀 Getting Started
Prerequisites
- Flutter 3.10 or later (Install)
- Dart 3.10+ (included with Flutter)
- iOS 12.0+ or Android API 21+ (for mobile)
- macOS 10.15+ or Windows 10+ or Linux (for desktop)
Installation
-
Clone the repository
git clone https://github.com/mohansella/BingeTube.git cd BingeTube -
Get dependencies
flutter pub get -
Run code generation
flutter pub run build_runner build -
Run the app
# Mobile flutter run # Desktop flutter run -d macos # or windows, linux # Web flutter run -d chrome
Optional: Configure YouTube API Key
To unlock full YouTube browsing capabilities:
- Get a YouTube Data API v3 key
- Open BingeTube → Profile → API Configuration
- Paste your API key and try searching
- Monitor quota usage in real-time
📱 App Architecture
┌─ Splash (Init & Redirect)
├─ Root (Tab Navigation)
│ ├─ Library (Your Collections)
│ ├─ Discover (Browse Content)
│ └─ Profile (Settings & Config)
├─ Binge (Watch Videos)
├─ Channel (Channel Details)
├─ Series (Multi-Channel Binge)
└─ Search (Query Content)
State Management: Riverpod providers manage all app state (collections, watch history, API config) Database: Drift ORM for type-safe SQL queries Navigation: GoRouter with named routes, deep linking, and URL-based state
🎨 Features in Detail
Collections
- Built-in curated collections (Key & Peele, and more)
- Add channels and create custom binges
- Tag and organize for easy discovery
- Persist watch state locally
Video Playback
- In-app player with standard controls
- Seamless playback across platforms
- Automatic next-video progression
- Watch history syncing
Search & Discovery
- Search channels and playlists (with API key)
- Browse curated recommendations
- Direct channel linking via URLs
- Share series with others via deep links
Offline Support
- Curated collections available without internet
- Cached data across sessions
- Works great on low-bandwidth connections
🤝 Contributing
Contributions are welcome! Here’s how:
- Fork the repository
- Create a feature branch (
git checkout -b feature/amazing-feature) - Commit changes (
git commit -m ‘Add amazing feature’) - Push to branch (
git push origin feature/amazing-feature) - Open a Pull Request
📄 License
This project is licensed under the MIT License — see LICENSE file for details.
🙋 Support & Feedback
- Found a bug? Open an issue
- Have a feature request? Create a discussion
- Want to contribute? See the Contributing section above
Made with ❤️ by @mohansella
