Flutter Movie App built with Riverpod, Clean Architecture, and GoRouter that showcases movies and TV series fetched from TMDB API. It includes now playing, popular, top-rated, and upcoming Movies, TV series and Celebrity with support for pagination, search, and detailed views.
- π Now Playing, Popular, Top Rated & Upcoming movie sections
- π Movie Detail Pages with Cast & Crew
- π― Recommended Movies
- π Search Movies
- π€ Artist/Actor Detail Page with navigation from movie cast
- β€οΈ Favorite Movies (saved locally using Hive database)
- πΊ Airing Today, On The Air, Popular & Upcoming TV series sections
- π TV Series Detail Pages with Cast & Crew
- π― Recommended TV Series
- π Search TV Series
- π€ Artist/Actor Detail Page with navigation from TV series cast
- β€οΈ Favorite TV Series (saved locally using Hive database)
- π Popular and Trending Celebrities/Persons sections
- π Celebrity Search functionality
- π€ Celebrity Detail Page with navigation from movie/tv cast
- β€οΈ Favorite Celebrities (saved locally using Hive database)
- π Pagination (infinite scroll)
- π Bottom Navigation
- π Multi-language Support with Localization (English & Spanish)
- π§ Declarative Routing with GoRouter
- π§± Clean Architecture (Presentation / Domain / Data)
- π§ͺ Riverpod State Management
- π Network layer using Dio with Logging
- π Smooth UX with loading indicators
- β€οΈ Favorite Management with Local Storage (Hive)
Fig. Clean Architecture
flutter_movie_clean_architecture/
βββ lib/
β βββ core/
β β βββ config/
β β β βββ app_constant.dart
β β βββ network/
β β β βββ dio_provider.dart
β β βββ utils/
β β β βββ utils.dart
β β βββ hive/
β β βββ favorite_model.dart
β β βββ favorite_model.g.dart
β β βββ hive_helper.dart
β βββ features/
β β βββ celebrity/
β β β βββ data/
β β β β βββ datasources/
β β β β β βββ celebrity_remote_data_source.dart
β β β β βββ models/
β β β β β βββ person_model.dart
β β β β β βββ person_list_response.dart
β β β β βββ repositories/
β β β β βββ celebrity_repository_impl.dart
β β β βββ domain/
β β β β βββ entities/
β β β β β βββ person.dart
β β β β βββ repositories/
β β β β β βββ celebrity_repository.dart
β β β β βββ usecases/
β β β β βββ get_popular_persons.dart
β β β β βββ get_trending_persons.dart
β β β β βββ search_persons.dart
β β β βββ presentation/
β β β βββ pages/
β β β β βββ celebrity_main_page.dart
β β β β βββ celebrity_search_page.dart
β β β β βββ popular_persons_page.dart
β β β β βββ trending_persons_page.dart
β β β βββ providers/
β β β β βββ celebrity_provider.dart
β β β βββ widgets/
β β β βββ person_card.dart
β β βββ movie/
β β β βββ data/
β β β β βββ datasources/
β β β β β βββ movie_remote_data_source.dart
β β β β βββ models/
β β β β β βββ movie_detail_model.dart
β β β β β βββ movie_model.dart
β β β β β βββ credit_model.dart
β β β β βββ repositories/
β β β β βββ movie_repository_impl.dart
β β β βββ domain/
β β β β βββ entities/
β β β β β βββ movie.dart
β β β β β βββ movie_detail.dart
β β β β β βββ credit.dart
β β β β β βββ artist_detail.dart
β β β β βββ repositories/
β β β β β βββ movie_repository.dart
β β β β βββ usecases/
β β β β βββ get_all_artist_movies.dart
β β β β βββ get_movie_detail.dart
β β β β βββ get_movie_credits.dart
β β β β βββ get_movie_search.dart
β β β β βββ get_now_playing.dart
β β β β βββ get_popular.dart
β β β β βββ get_top_rated.dart
β β β β βββ get_up_coming.dart
β β β β βββ get_recommended_movie.dart
β β β β βββ get_artist_detail.dart
β β β βββ presentation/
β β β βββ pages/
β β β β βββ artist_detail_page.dart
β β β β βββ artist_list_page.dart
β β β β βββ movie_detail_page.dart
β β β β βββ movie_main_page.dart
β β β β βββ now_playing_page.dart
β β β β βββ popular_page.dart
β β β β βββ top_rated_page.dart
β β β β βββ up_coming_page.dart
β β β βββ providers/
β β β β βββ movie_provider.dart
β β β βββ widgets/
β β β βββ movie_card.dart
β β β βββ movie_search.dart
β β βββ tv_series/
β β β βββ data/
β β β β βββ datasources/
β β β β β βββ tv_series_remote_data_source.dart
β β β β βββ models/
β β β β β βββ tv_series_detail_model.dart
β β β β β βββ tv_series_model.dart
β β β β β βββ tv_series_credit_model.dart
β β β β βββ repositories/
β β β β βββ tv_series_repository_impl.dart
β β β βββ domain/
β β β β βββ entities/
β β β β β βββ tv_series.dart
β β β β β βββ tv_series_detail.dart
β β β β βββ repositories/
β β β β β βββ tv_series_repository.dart
β β β β βββ usecases/
β β β β βββ get_airing_today.dart
β β β β βββ get_on_the_air.dart
β β β β βββ get_popular_tv_series.dart
β β β β βββ get_upcoming_tv_series.dart
β β β β βββ get_tv_series_detail.dart
β β β β βββ get_tv_series_credits.dart
β β β β βββ get_recommended_tv_series.dart
β β β β βββ get_tv_series_search.dart
β β β βββ presentation/
β β β βββ pages/
β β β β βββ airing_today_page.dart
β β β β βββ on_the_air_page.dart
β β β β βββ popular_tv_series_page.dart
β β β β βββ tv_series_detail_page.dart
β β β β βββ tv_series_main_page.dart
β β β β βββ upcoming_tv_series_page.dart
β β β βββ providers/
β β β β βββ tv_series_provider.dart
β β β βββ widgets/
β β β βββ tv_series_card.dart
β β βββ favorites/
β β βββ favorites_page.dart
β βββ routing/
β β βββ app_router.dart
β βββ main.dart
βββ ios/
βββ screen_shots/
βββ test/
βββ .flutter-plugins
βββ .flutter-plugins-dependencies
βββ .gitignore
βββ .metadata
βββ analysis_options.yaml
βββ flutter_movie_clean_architecture.iml
git clone git@github.com:piashcse/flutter-movie-clean-architecture.git
flutter pub get
flutter pub run build_runner build --delete-conflicting-outputs
This command generates code for:
- Freezed models (immutable data classes)
- JsonSerializable (JSON serialization/deserialization)
- Hive adapters (local database models)
flutter run
After running the app, you can:
- Browse movies, TV series, and celebrities
- View detailed information about each item
- Save your favorite items using the heart icon on detail pages
- Access your saved favorites through the Favorites tab
- Flutter - Google's UI toolkit for building natively compiled applications for mobile, web, and desktop from a single codebase.
- Riverpod - A simple, composable, and testable state management solution for Flutter.
- GoRouter - Declarative routing package for Flutter, designed to work seamlessly with state management and deep linking.
- Dio - A powerful HTTP client for Dart, supporting interceptors, global configuration, FormData, request cancellation, and more.
- Freezed - A code generator for immutable classes that helps with union types/pattern matching in Dart.
- JsonSerializable - Generates code for converting between Dart objects and JSON, making serialization easy.
- Flutter Localizations - Internationalization and localization support for multi-language applications.
- Logger / DioLogger - Easy and pretty logging package for debugging; use
DioLogger
to log Dio HTTP requests and responses. - Hive - Lightweight and blazing fast key-value database written in pure Dart.
- Hive Flutter - Extension for Hive that enables Flutter specific features.
Mehedi Hassan Piash
Copyright 2025 piashcse (Mehedi Hassan Piash)
Licensed under the Apache License, Version 2.0 (the "License");
you may not use this file except in compliance with the License.
You may obtain a copy of the License at
http://www.apache.org/licenses/LICENSE-2.0
Unless required by applicable law or agreed to in writing, software
distributed under the License is distributed on an "AS IS" BASIS,
WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
See the License for the specific language governing permissions and
limitations under the License.