{"id":21437481,"url":"https://github.com/aritrac1/showtime","last_synced_at":"2026-05-07T01:31:32.552Z","repository":{"id":264261383,"uuid":"869448242","full_name":"AritraC1/Showtime","owner":"AritraC1","description":"A cross-platform Movies \u0026 TV Shows app built with Flutter, powered by the TMDB API, supporting iOS and Android. Includes search, details, and a favorites feature.","archived":false,"fork":false,"pushed_at":"2026-01-24T11:27:53.000Z","size":624,"stargazers_count":1,"open_issues_count":0,"forks_count":0,"subscribers_count":1,"default_branch":"main","last_synced_at":"2026-01-24T17:28:19.347Z","etag":null,"topics":["android","api","app-development","cross-platform","dart","flutter","flutter-dart","flutter-development","http-requests","ios","mobile-app","movies-streaming","persistent-storage","provider-state-management","series-streaming","sharedpreferences","sqflite","tmdb-api"],"latest_commit_sha":null,"homepage":"","language":"Dart","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/AritraC1.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}},"created_at":"2024-10-08T10:07:43.000Z","updated_at":"2026-01-24T11:27:57.000Z","dependencies_parsed_at":"2025-07-24T15:29:56.657Z","dependency_job_id":"f0496810-41d5-42fd-9335-a3c4fb4892de","html_url":"https://github.com/AritraC1/Showtime","commit_stats":null,"previous_names":["aritrac1/showtime"],"tags_count":0,"template":false,"template_full_name":null,"purl":"pkg:github/AritraC1/Showtime","repository_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/AritraC1%2FShowtime","tags_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/AritraC1%2FShowtime/tags","releases_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/AritraC1%2FShowtime/releases","manifests_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/AritraC1%2FShowtime/manifests","owner_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/owners/AritraC1","download_url":"https://codeload.github.com/AritraC1/Showtime/tar.gz/refs/heads/main","sbom_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/AritraC1%2FShowtime/sbom","scorecard":null,"host":{"name":"GitHub","url":"https://github.com","kind":"github","repositories_count":286080680,"owners_count":32719419,"icon_url":"https://github.com/github.png","version":null,"created_at":"2022-05-30T11:31:42.601Z","updated_at":"2026-05-07T00:29:05.620Z","status":"ssl_error","status_checked_at":"2026-05-07T00:28:57.074Z","response_time":117,"last_error":"SSL_connect returned=1 errno=0 peeraddr=140.82.121.6:443 state=error: unexpected eof while reading","robots_txt_status":"success","robots_txt_updated_at":"2025-07-24T06:49:26.215Z","robots_txt_url":"https://github.com/robots.txt","online":false,"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":["android","api","app-development","cross-platform","dart","flutter","flutter-dart","flutter-development","http-requests","ios","mobile-app","movies-streaming","persistent-storage","provider-state-management","series-streaming","sharedpreferences","sqflite","tmdb-api"],"created_at":"2024-11-23T00:20:00.320Z","updated_at":"2026-05-07T01:31:32.546Z","avatar_url":"https://github.com/AritraC1.png","language":"Dart","funding_links":[],"categories":[],"sub_categories":[],"readme":"# Showtime\n\n## A Cross-Platform Movie \u0026 TV Show Streaming App\n\nA feature-rich Flutter application for discovering and exploring trending movies and TV shows. Built with the TMDB API, Showtime delivers a seamless browsing experience with detailed information, personalized favorites, and an elegant dark-themed interface.\n\n---\n\n## ✨ Features\n\n### Core Functionality\n- **Browse Trending Movies** - Discover the latest trending movies with infinite scrolling pagination\n- **Browse Trending TV Shows** - Stay updated with trending television series\n- **Detailed Content Pages** - View comprehensive information including:\n  - High-quality backdrop and poster images\n  - Plot overview and synopsis\n  - Release dates and ratings (out of 10)\n  - Trailer carousel with YouTube integration\n- **Favorites Management** - Add or remove movies and TV shows to a personalized favorites list\n- **Unified Favorites View** - Access both saved movies and series from a single tab\n\n### User Experience\n- **Infinite Scroll Pagination** - Seamlessly load more content as you scroll to the bottom\n- **Dark Theme UI** - Eye-friendly dark interface optimized for content discovery\n- **Responsive Grid Layout** - Optimized 3-column poster grid for mobile and tablet devices\n- **Smooth Navigation** - Intuitive bottom navigation bar for easy tab switching\n- **Fast Load Times** - Efficient caching and network management\n\n---\n\n## 🛠️ Tech Stack\n\n### Framework \u0026 Language\n- **Flutter 3.0+** - Cross-platform mobile framework\n- **Dart** - Primary programming language\n\n### State Management \u0026 Architecture\n- **Provider 6.1.2** - Reactive state management with ChangeNotifier pattern\n- **Three Dedicated Providers**:\n  - `MoviesProvider` - Handles trending movies and movie favorites\n  - `SeriesProvider` - Manages TV series and series favorites\n  - `VideosProvider` - Fetches and manages video trailers\n\n### API \u0026 Data\n- **TMDB API** - The Movie Database for comprehensive entertainment data\n- **HTTP 1.2.2** - Network requests and API communication\n\n### UI Components \u0026 Libraries\n- **Material Design** - Flutter's Material Design system\n- **Carousel Slider 5.0.0** - Interactive carousel for trailers and clips\n- **YouTube Player Flutter 9.1.3** - Embedded YouTube video playback\n\n### Storage \u0026 Utilities\n- **Shared Preferences 2.3.2** - Local key-value storage for app preferences\n- **SQLite 2.3.3+1** - Database support for potential future features\n- **Flutter InAppWebView 6.0.0** - Web content viewing capabilities\n- **Flutter DotEnv 6.0.0** - Environment variable management for secure API key storage\n\n### Development\n- **Flutter Lints 3.0.0** - Code quality and style guidelines\n- **Flutter Native Splash 2.4.1** - Beautiful splash screen configuration\n\n---\n\n## 📁 Project Structure\n\n```\nlib/\n├── main.dart                 # App entry point with MultiProvider setup\n├── models/\n│   ├── movies.dart          # Movies data model with TMDB JSON parsing\n│   ├── series.dart          # Series data model with TMDB JSON parsing\n│   └── videos.dart          # Videos/trailers data model\n├── pages/\n│   ├── home_page.dart       # Main navigation hub with bottom nav bar\n│   ├── movies_page.dart     # Movies grid with infinite scroll\n│   ├── series_page.dart     # TV series grid with infinite scroll\n│   ├── movies_details_page.dart  # Movie detail view with trailers\n│   ├── series_details_page.dart  # TV series detail view\n│   └── favs_page.dart       # Combined favorites display\n├── provider/\n│   ├── movies_provider.dart       # Movies state management\n│   ├── series_provider.dart       # TV series state management\n│   └── videos_provider.dart       # Video trailers state management\n└── utils/\n    ├── constants.dart       # TMDB API key and image base URL\n    └── colors.dart          # App color scheme definitions\n```\n\n---\n\n## 🚀 Getting Started\n\n### Prerequisites\n\nBefore you begin, ensure you have the following installed:\n\n- **Flutter SDK** - Version 3.0 or higher\n  - [Download Flutter](https://flutter.dev/docs/get-started/install)\n- **Dart SDK** - Comes bundled with Flutter\n- **TMDB API Key** - Free account at [The Movie Database](https://www.themoviedb.org/signup)\n- **Android Studio** or **Xcode** (for iOS development)\n\n### Installation\n\n1. **Clone the repository**\n\n```bash\ngit clone https://github.com/AritraC1/Showtime.git\ncd Showtime\n```\n\n2. **Install dependencies**\n\n```bash\nflutter pub get\n```\n\n3. **Get your TMDB API Key**\n\n- Visit [themoviedb.org](https://www.themoviedb.org/signup) and create a free account\n- Go to Settings → API to generate your API key\n\n### Configuration\n\n1. **Create a `.env` file**\n\nIn the root of your project, create a `.env` file with your TMDB API key:\n\n```env\nTMDB_API_KEY=your_tmdb_api_key_here\n```\n\n2. **Verify `.gitignore`**\n\nMake sure your `.gitignore` includes `.env` to keep your API key secure:\n\n```\n.env\n```\n\n3. **How It Works**\n\nThe app uses `flutter_dotenv` to load environment variables at runtime. The `main.dart` initializes the dotenv package:\n\n```dart\nFuture\u003cvoid\u003e main() async {\n  WidgetsFlutterBinding.ensureInitialized();\n  await dotenv.load(fileName: \".env\");\n  // ... rest of app initialization\n}\n```\n\nThe API key is accessed from `lib/utils/constants.dart`:\n\n```dart\nclass Constants {\n  static String get apiKey =\u003e dotenv.env['TMDB_API_KEY'] ?? '';\n  static const imagePath = 'https://image.tmdb.org/t/p/w500';\n}\n```\n\n---\n\n## 📱 Running the App\n\n### Run on Development Device\n\n```bash\nflutter run\n```\n\n### Run on Specific Device/Emulator\n\n```bash\nflutter devices                    # List available devices\nflutter run -d \u003cdevice_id\u003e        # Run on specific device\n```\n\n### Run in Release Mode\n\n```bash\nflutter run --release\n```\n\n### Build Standalone APK (Android)\n\n```bash\nflutter build apk --release\n```\n\n### Build for iOS\n\n```bash\nflutter build ios --release\n```\n\n---\n\n## 🎯 How to Use\n\n### Browse Content\n\n1. **Movies Tab** - Swipe up to explore trending movies\n2. **TV Series Tab** - Swipe up to explore trending series\n3. **Tap any poster** - View detailed information about a title\n\n### View Details\n\n- **Overview** - Read full plot synopsis\n- **Release Date** - Check when the content was released\n- **Rating** - View average community ratings (0-10 scale)\n- **Trailers** - Watch video clips via YouTube Player\n\n### Manage Favorites\n\n1. **Add to Favorites** - Tap the heart icon on any detail page\n2. **View Favorites** - Go to the Favorites tab\n3. **Remove Favorites** - Tap the heart icon again to unfavorite\n4. **Favorites persist** - During the current app session\n\n---\n\n## 🔑 API Integration\n\n### TMDB API Endpoints Used\n\n- **Trending Movies**: `/trending/movie/day`\n- **Trending TV**: `/trending/tv/day`\n- **Movie Videos**: `/movie/{id}/videos`\n\n### Pagination\n\n- Both movies and series support page-based pagination\n- Automatic page increments as user scrolls to bottom\n- Loading state prevents duplicate requests\n\n---\n\n## 📦 Dependencies Overview\n\n| Package                  | Version | Purpose           |\n|--------------------------|---------|-------------------|\n| `provider`               | 6.1.2   | State management  |\n| `http`                   | 1.2.2   | HTTP requests     |\n| `carousel_slider`        | 5.0.0   | Image carousels   |\n| `youtube_player_flutter` | 9.1.3   | Video playback    |\n| `flutter_native_splash`  | 2.4.1   | App splash screen |\n| `shared_preferences`     | 2.3.2   | Local storage     |\n| `sqflite`                | 2.3.3+1 | Database support  |\n| `flutter_inappwebview`   | 6.0.0   | Web content       |\n| `flutter_dotenv`         | 6.0.0   | Environment vars  |\n\n---\n\n## 🚧 Future Enhancements\n\n- [ ] **Search Functionality** - Search for specific movies or series\n- **Persistent Favorites** - Save favorites using SharedPreferences or SQLite\n- **User Reviews** - Read and write user reviews\n- **Rating \u0026 Sorting** - Filter content by rating or release date\n- **Watchlist** - \"Want to Watch\" list alongside favorites\n- **Dark/Light Theme Toggle** - Dynamic theme switching\n- **Multiple Languages** - Localization support\n- **Cast Information** - Display actor and crew details\n- **Similar Recommendations** - Suggest similar movies/shows\n---\n\n## 📝 Recent Updates\n\n### Version Updates\n- **YouTube Player Flutter** - Updated to 9.1.3 for improved video playback\n- **Flutter SDK** - Minimum version updated to 3.24.0\n- **Dart SDK** - Minimum version updated to 3.5.0\n\n### Security Improvements\n- **Added `flutter_dotenv` 6.0.0** - Secure environment variable management\n- **Removed hardcoded API key** - Now uses `.env` file for sensitive data\n- **Added INTERNET permission** - Android manifest now explicitly includes internet permission\n\n### Code Quality\n- **Improved code formatting** - Better readability and adherence to Dart style guide\n- **Dynamic API URL construction** - URL builders now use getters for better integration with dotenv\n- **Async main initialization** - App properly initializes dotenv before running\n\n### Dependencies\n- **flutter_inappwebview** - Upgraded and properly configured as direct dependency\n- **YouTube Player Flutter** - Updated to latest stable version for better compatibility\n---\n\n## 🤝 Contributing\n\nContributions are welcome! We appreciate any improvements, bug fixes, or new features.\n\n### How to Contribute\n\n1. **Fork the repository** - Create your own copy\n2. **Create a feature branch** - `git checkout -b feature/amazing-feature`\n3. **Make your changes** - Implement your improvements\n4. **Commit your changes** - `git commit -m 'Add amazing feature'`\n5. **Push to the branch** - `git push origin feature/amazing-feature`\n6. **Open a Pull Request** - Submit your changes for review\n\n### Code Style\n\n- Follow [Dart style guide](https://dart.dev/guides/language/effective-dart/style)\n- Use meaningful variable and function names\n- Add comments for complex logic\n- Keep methods focused and small\n\n---\n\n## 📞 Support \u0026 Feedback\n\nIf you encounter any issues or have suggestions:\n\n- Open an [Issue](https://github.com/AritraC1/Showtime/issues) on GitHub\n- Check existing issues before creating new ones\n- Provide detailed information about your problem\n\n---\n","project_url":"https://awesome.ecosyste.ms/api/v1/projects/github.com%2Faritrac1%2Fshowtime","html_url":"https://awesome.ecosyste.ms/projects/github.com%2Faritrac1%2Fshowtime","lists_url":"https://awesome.ecosyste.ms/api/v1/projects/github.com%2Faritrac1%2Fshowtime/lists"}