Movie Hub š¬š
Movie Hub is an app that allows users to view different categories of movies and also watch!. It creates an immersive and seamless movie-watching experience!. It is built with Flutteršš and Firebase using theĀ TMDB APIĀ andĀ VidSrcĀ for viewing the movies.
It provides an interactive and captivating experience for the user!
Demo
Ā Screen.Recording.2023-12-21.at.15.48.58.movĀ
Preview
Key Features
- View movies in diverse categories (e.g Trending, Popular, Upcoming, Top Rated)
- Discover Movies
- Watch movies
- Add Movies to watchList
- Search for Movies
- Sign in, Sign Up, Forgot Password, Sign Out
- Choose Avatar
- View Similar Movies to a Movie
- View Images from a Movie
- Infinite scrolling with pagination
- Nice Loading UI with the Shimmer
- Visit Movie’s webpage
Installation
- You can download the apk to your Android device fromĀ here
To run MovieHub from the Codebase, you need to get a TMDB API key fromĀ hereĀ you will have to create an account, if you don’t have one.
Once you have the API Key, you can create an api_keys.dart file, locate the lib > core > utils and create the file under it
Add the following:
String get baseUrl => 'https://api.themoviedb.org/3';
String get apiKey => 'YOUR API KEY';
String get videoBaseUrl => 'https://vidsrc.to/embed/movie/';
You also need to create a firebase project atĀ Firebase
With all these in place, you can
flutter run
Packages Used
- flutter_screenutil: For making the sizes used in the app are responsive
- flutter_svg: For loading SVG assets
- cached_network_image: For caching data of images to boost app performance
- provider: For managing state across the app
- get_it: For dependency Injection
- equatable: To enable comparison of objects
- http: To enable network calls
- shimmer: For the beautiful loader
- carousel_slider: For the Trending Movie Preview
- intl: For advanced date Formatting
- url_launcher: To open web pages
- flutter_inappwebview: For launching the movie screen
- lottie: For the nice animated assets used for empty, error and loading states
- fpdart: For Functional Programming mainly for the use of Either.
- firebase_core,Ā firebase_auth,Ā firebase_storage,Ā cloud_firestore,Ā firebase_crashlytics: which are Firebase services!
Lessons Learned and Challenges faced
Veni, Vidi, Vici!
I faced a lot of issues during the development of this app, but i also learnt alot!
- The main reason why i took on this task is to explore Firebase well, and i did that to an extent, exploring its Database, Storage, Crashlytics and Authentication Services.
- I had issues trying to make watching movies possible, then when i thought i had gotten it right, it wasn’t working on Android š¤¦š½āāļøš, but i had to do more research and changed the webview package , after a lot of iteration, it worked!
- I also had issues while implementing the watchlist section, i had a bug that took me a while to fix, but after speaking to my seniors and alot of reflection, i got it right
- What kept me going was the joy i felt after i completed a feature successfully.
Provides the list of the opensource Flutter apps collection with GitHub repository.