A modern IMDb clone built with Flutter and BloC state management to explore movies and TV shows effortlessly.
- Features
- Tech Stack
- Getting Started
- Project Structure
- API Integration
- Screenshots
- Contributing
- License
- Browse popular, top-rated, and upcoming movies.
- Search for movies and TV shows by title.
- View detailed information including trailers, cast, and crew.
- User authentication for adding favorite movies and writing reviews.
- Elegant and responsive UI with Material Design principles.
- Flutter: Cross-platform UI toolkit for building natively compiled applications.
- Backend API: The Movie Database (TMDb) API
- flutter_bloc: Implements the BLoC (Business Logic Component) pattern for predictable state management.
- get_it: Service locator for managing dependencies.
- injectable: Code generation for DI setup and easier integration with
get_it
.
- go_router: Declarative routing library for handling dynamic navigation.
- http: Lightweight library for HTTP requests.
- dio: Advanced networking library for handling REST APIs and interceptors.
- retrofit: Type-safe HTTP client generator based on Dio.
- hive: Lightweight key-value storage for Flutter apps.
- hive_flutter: Hive extension for Flutter with adapters.
- build_runner: Code generator utility for Dart.
- injectable_generator: Generates boilerplate code for dependency injection.
- retrofit_generator: Generates REST API clients from annotated classes.
- json_serializable: Generates boilerplate for JSON serialization/deserialization.
- hive_generator: Generates type adapters for Hive storage.
- cine_scope_localization: Custom package for managing app localization.
- equatable: Simplifies equality comparisons for Dart objects.
- logging: Provides structured logging functionality for debugging.
- Install Flutter SDK Flutter Install Guide.
- TMDb API Key: Sign up for a developer account on TMDb.
- Clone the repository:
git clone https://github.com/yourusername/cinescope.git cd cinescope
- Install dependencies:
flutter pub get
- Add your TMDb API Key in
lib/constants/api_constants.dart
:const String tmdbApiKey = "YOUR_API_KEY";
- Run the app:
flutter run
lib/
├── blocs/ # BloC implementations for state management
├── models/ # Movie, TV show, and other data models
├── repositories/ # API integration logic
├── screens/ # All screens (home, details, search, etc.)
├── widgets/ # Reusable widgets
├── constants/ # API keys, URLs, and app-wide constants
├── utils/ # Helpers and utilities (e.g., network checks)
└── main.dart # App entry point
This project uses the TMDb API to fetch movie and TV show data. Here are the key endpoints used:
- Popular Movies:
/movie/popular
- Search:
/search/movie
- Movie Details:
/movie/{movie_id}
For full API documentation, visit TMDb API Docs
On Development...
Contributions are welcome! Please follow these steps:
- Fork the repository.
- Create a new branch:
git checkout -b feature-name
- Commit your changes:
git commit -m "Added new feature"
- Push the branch:
git push origin feature-name
- Submit a pull request.
This project is licensed under the MIT License - see the LICENSE file for details.