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!
Screen.Recording.2023-12-21.at.15.48.58.mov
![Screenshot 2023-12-21 at 15 17 25](https://private-user-images.githubusercontent.com/85044009/292230317-e84807c7-ba25-449a-b3b9-32afba82d35f.png?jwt=eyJhbGciOiJIUzI1NiIsInR5cCI6IkpXVCJ9.eyJpc3MiOiJnaXRodWIuY29tIiwiYXVkIjoicmF3LmdpdGh1YnVzZXJjb250ZW50LmNvbSIsImtleSI6ImtleTUiLCJleHAiOjE3MjA2MzEwNTksIm5iZiI6MTcyMDYzMDc1OSwicGF0aCI6Ii84NTA0NDAwOS8yOTIyMzAzMTctZTg0ODA3YzctYmEyNS00NDlhLWIzYjktMzJhZmJhODJkMzVmLnBuZz9YLUFtei1BbGdvcml0aG09QVdTNC1ITUFDLVNIQTI1NiZYLUFtei1DcmVkZW50aWFsPUFLSUFWQ09EWUxTQTUzUFFLNFpBJTJGMjAyNDA3MTAlMkZ1cy1lYXN0LTElMkZzMyUyRmF3czRfcmVxdWVzdCZYLUFtei1EYXRlPTIwMjQwNzEwVDE2NTkxOVomWC1BbXotRXhwaXJlcz0zMDAmWC1BbXotU2lnbmF0dXJlPWJjMWI2OGU0YTk3ZmRkN2ZkYjVlNmNjNDdjMGI0N2M1NmRhZGI0OTNhZWExYjhhYWMxMTEzNzJmNmNmNzJkOTYmWC1BbXotU2lnbmVkSGVhZGVycz1ob3N0JmFjdG9yX2lkPTAma2V5X2lkPTAmcmVwb19pZD0wIn0.Yf4MoRqSYHDnBxSKFBB2sfXB66Jyp75-6K4BYVtee1w)
![Screenshot 2023-12-21 at 15 17 33](https://private-user-images.githubusercontent.com/85044009/292230888-949e49c0-18c0-42f0-bf39-bf96d673a35d.png?jwt=eyJhbGciOiJIUzI1NiIsInR5cCI6IkpXVCJ9.eyJpc3MiOiJnaXRodWIuY29tIiwiYXVkIjoicmF3LmdpdGh1YnVzZXJjb250ZW50LmNvbSIsImtleSI6ImtleTUiLCJleHAiOjE3MjA2MzEwNTksIm5iZiI6MTcyMDYzMDc1OSwicGF0aCI6Ii84NTA0NDAwOS8yOTIyMzA4ODgtOTQ5ZTQ5YzAtMThjMC00MmYwLWJmMzktYmY5NmQ2NzNhMzVkLnBuZz9YLUFtei1BbGdvcml0aG09QVdTNC1ITUFDLVNIQTI1NiZYLUFtei1DcmVkZW50aWFsPUFLSUFWQ09EWUxTQTUzUFFLNFpBJTJGMjAyNDA3MTAlMkZ1cy1lYXN0LTElMkZzMyUyRmF3czRfcmVxdWVzdCZYLUFtei1EYXRlPTIwMjQwNzEwVDE2NTkxOVomWC1BbXotRXhwaXJlcz0zMDAmWC1BbXotU2lnbmF0dXJlPWQ4Yjg1YzhmMWE5NzY2Njg2NWUzOWVkODZiMDliYWE3NWE3MGIzYTRjYTEzZDAzNjFkN2VmZTNkZWFmZWQ3YTgmWC1BbXotU2lnbmVkSGVhZGVycz1ob3N0JmFjdG9yX2lkPTAma2V5X2lkPTAmcmVwb19pZD0wIn0.P4Dt3q-76ye_nFszqbM-Wxmfe_p0fC7KbnVWxbhHdDk)
![Screenshot 2023-12-21 at 15 17 44](https://private-user-images.githubusercontent.com/85044009/292230974-ddde4577-9b47-43a4-b3b7-be3bd53460ac.png?jwt=eyJhbGciOiJIUzI1NiIsInR5cCI6IkpXVCJ9.eyJpc3MiOiJnaXRodWIuY29tIiwiYXVkIjoicmF3LmdpdGh1YnVzZXJjb250ZW50LmNvbSIsImtleSI6ImtleTUiLCJleHAiOjE3MjA2MzEwNTksIm5iZiI6MTcyMDYzMDc1OSwicGF0aCI6Ii84NTA0NDAwOS8yOTIyMzA5NzQtZGRkZTQ1NzctOWI0Ny00M2E0LWIzYjctYmUzYmQ1MzQ2MGFjLnBuZz9YLUFtei1BbGdvcml0aG09QVdTNC1ITUFDLVNIQTI1NiZYLUFtei1DcmVkZW50aWFsPUFLSUFWQ09EWUxTQTUzUFFLNFpBJTJGMjAyNDA3MTAlMkZ1cy1lYXN0LTElMkZzMyUyRmF3czRfcmVxdWVzdCZYLUFtei1EYXRlPTIwMjQwNzEwVDE2NTkxOVomWC1BbXotRXhwaXJlcz0zMDAmWC1BbXotU2lnbmF0dXJlPTVhZjJkNWNmNDMwNjU2YzlkZWVjZDY0NTdlNTc4YjJiMDk4NGM4NWI2ODZlYmVkYmViODBiNDA3MDkzYjQ4NTAmWC1BbXotU2lnbmVkSGVhZGVycz1ob3N0JmFjdG9yX2lkPTAma2V5X2lkPTAmcmVwb19pZD0wIn0.qQnAZuiCdbFnyOduHthUzhOw52OlJ8d4LPQkjyYUXG4)
![Screenshot 2023-12-21 at 15 18 06](https://private-user-images.githubusercontent.com/85044009/292231058-2d4cd79b-ec30-41c7-9bea-27c84cea6aef.png?jwt=eyJhbGciOiJIUzI1NiIsInR5cCI6IkpXVCJ9.eyJpc3MiOiJnaXRodWIuY29tIiwiYXVkIjoicmF3LmdpdGh1YnVzZXJjb250ZW50LmNvbSIsImtleSI6ImtleTUiLCJleHAiOjE3MjA2MzEwNTksIm5iZiI6MTcyMDYzMDc1OSwicGF0aCI6Ii84NTA0NDAwOS8yOTIyMzEwNTgtMmQ0Y2Q3OWItZWMzMC00MWM3LTliZWEtMjdjODRjZWE2YWVmLnBuZz9YLUFtei1BbGdvcml0aG09QVdTNC1ITUFDLVNIQTI1NiZYLUFtei1DcmVkZW50aWFsPUFLSUFWQ09EWUxTQTUzUFFLNFpBJTJGMjAyNDA3MTAlMkZ1cy1lYXN0LTElMkZzMyUyRmF3czRfcmVxdWVzdCZYLUFtei1EYXRlPTIwMjQwNzEwVDE2NTkxOVomWC1BbXotRXhwaXJlcz0zMDAmWC1BbXotU2lnbmF0dXJlPWI1YzQwZGZmOTMyOWMxYmE0NDJkY2Y5YmUyYzAwZjEwYzBhODE2ODc2ODVhMWFiNGEwMTFlODVlMDIzMjRkN2UmWC1BbXotU2lnbmVkSGVhZGVycz1ob3N0JmFjdG9yX2lkPTAma2V5X2lkPTAmcmVwb19pZD0wIn0.IPSzMuPlalBiB7D2HSGNAtU2rutbYVr-3muAYity-0s)
![Screenshot 2023-12-21 at 15 18 16](https://private-user-images.githubusercontent.com/85044009/292231221-13a9ddcb-86bf-4884-b35e-fc9b43709e28.png?jwt=eyJhbGciOiJIUzI1NiIsInR5cCI6IkpXVCJ9.eyJpc3MiOiJnaXRodWIuY29tIiwiYXVkIjoicmF3LmdpdGh1YnVzZXJjb250ZW50LmNvbSIsImtleSI6ImtleTUiLCJleHAiOjE3MjA2MzEwNTksIm5iZiI6MTcyMDYzMDc1OSwicGF0aCI6Ii84NTA0NDAwOS8yOTIyMzEyMjEtMTNhOWRkY2ItODZiZi00ODg0LWIzNWUtZmM5YjQzNzA5ZTI4LnBuZz9YLUFtei1BbGdvcml0aG09QVdTNC1ITUFDLVNIQTI1NiZYLUFtei1DcmVkZW50aWFsPUFLSUFWQ09EWUxTQTUzUFFLNFpBJTJGMjAyNDA3MTAlMkZ1cy1lYXN0LTElMkZzMyUyRmF3czRfcmVxdWVzdCZYLUFtei1EYXRlPTIwMjQwNzEwVDE2NTkxOVomWC1BbXotRXhwaXJlcz0zMDAmWC1BbXotU2lnbmF0dXJlPWYwYjY1ZDEzZWJmNzRlMDFjNDE5MDVjNDZlMjllODQyMDI2ZDVhODQyMmQ2NWM5ZTAwNjQ5ZmRiZTc3NThiOWEmWC1BbXotU2lnbmVkSGVhZGVycz1ob3N0JmFjdG9yX2lkPTAma2V5X2lkPTAmcmVwb19pZD0wIn0.NgsihjFcTVFAuLKXY3jNoMhuCHlsw26zB1d2a95PS0Q)
![Screenshot 2023-12-21 at 15 18 21](https://private-user-images.githubusercontent.com/85044009/292231327-7f5f35e4-b33f-4cd8-8a6a-04da4a067663.png?jwt=eyJhbGciOiJIUzI1NiIsInR5cCI6IkpXVCJ9.eyJpc3MiOiJnaXRodWIuY29tIiwiYXVkIjoicmF3LmdpdGh1YnVzZXJjb250ZW50LmNvbSIsImtleSI6ImtleTUiLCJleHAiOjE3MjA2MzEwNTksIm5iZiI6MTcyMDYzMDc1OSwicGF0aCI6Ii84NTA0NDAwOS8yOTIyMzEzMjctN2Y1ZjM1ZTQtYjMzZi00Y2Q4LThhNmEtMDRkYTRhMDY3NjYzLnBuZz9YLUFtei1BbGdvcml0aG09QVdTNC1ITUFDLVNIQTI1NiZYLUFtei1DcmVkZW50aWFsPUFLSUFWQ09EWUxTQTUzUFFLNFpBJTJGMjAyNDA3MTAlMkZ1cy1lYXN0LTElMkZzMyUyRmF3czRfcmVxdWVzdCZYLUFtei1EYXRlPTIwMjQwNzEwVDE2NTkxOVomWC1BbXotRXhwaXJlcz0zMDAmWC1BbXotU2lnbmF0dXJlPTU1NjVlMzlmY2U4YTNmOTI4YjNmMjAyMGZkNTIwY2U4MmY1MWQ1ZTY4YTg1YzUxYWFlMzA0NGFkMTA2NWNkYjEmWC1BbXotU2lnbmVkSGVhZGVycz1ob3N0JmFjdG9yX2lkPTAma2V5X2lkPTAmcmVwb19pZD0wIn0.-i5Y_0xCWrjIQ73Wgn19_0M2YzPIFOZPzDFsfvQHDuY)
![Screenshot 2023-12-21 at 15 18 51](https://private-user-images.githubusercontent.com/85044009/292231424-b824506a-1364-486e-9451-b80c93099941.png?jwt=eyJhbGciOiJIUzI1NiIsInR5cCI6IkpXVCJ9.eyJpc3MiOiJnaXRodWIuY29tIiwiYXVkIjoicmF3LmdpdGh1YnVzZXJjb250ZW50LmNvbSIsImtleSI6ImtleTUiLCJleHAiOjE3MjA2MzEwNTksIm5iZiI6MTcyMDYzMDc1OSwicGF0aCI6Ii84NTA0NDAwOS8yOTIyMzE0MjQtYjgyNDUwNmEtMTM2NC00ODZlLTk0NTEtYjgwYzkzMDk5OTQxLnBuZz9YLUFtei1BbGdvcml0aG09QVdTNC1ITUFDLVNIQTI1NiZYLUFtei1DcmVkZW50aWFsPUFLSUFWQ09EWUxTQTUzUFFLNFpBJTJGMjAyNDA3MTAlMkZ1cy1lYXN0LTElMkZzMyUyRmF3czRfcmVxdWVzdCZYLUFtei1EYXRlPTIwMjQwNzEwVDE2NTkxOVomWC1BbXotRXhwaXJlcz0zMDAmWC1BbXotU2lnbmF0dXJlPWZlNzRiYWU1ZjI2MzI3NWZkZWQ0NjM5MzFmOGJjOWJiZjE5MmExY2YzMTM1ZmQ5ZWVjYWEyOTY1MzQ3N2Y4MGEmWC1BbXotU2lnbmVkSGVhZGVycz1ob3N0JmFjdG9yX2lkPTAma2V5X2lkPTAmcmVwb19pZD0wIn0.ZXjAH0t49hdu5-1ChhcvV0YJJw9IqTYpYs3YqBKzzTk)
![Screenshot 2023-12-21 at 15 18 57](https://private-user-images.githubusercontent.com/85044009/292231489-917d5834-8976-450f-a546-b98940a8bda5.png?jwt=eyJhbGciOiJIUzI1NiIsInR5cCI6IkpXVCJ9.eyJpc3MiOiJnaXRodWIuY29tIiwiYXVkIjoicmF3LmdpdGh1YnVzZXJjb250ZW50LmNvbSIsImtleSI6ImtleTUiLCJleHAiOjE3MjA2MzEwNTksIm5iZiI6MTcyMDYzMDc1OSwicGF0aCI6Ii84NTA0NDAwOS8yOTIyMzE0ODktOTE3ZDU4MzQtODk3Ni00NTBmLWE1NDYtYjk4OTQwYThiZGE1LnBuZz9YLUFtei1BbGdvcml0aG09QVdTNC1ITUFDLVNIQTI1NiZYLUFtei1DcmVkZW50aWFsPUFLSUFWQ09EWUxTQTUzUFFLNFpBJTJGMjAyNDA3MTAlMkZ1cy1lYXN0LTElMkZzMyUyRmF3czRfcmVxdWVzdCZYLUFtei1EYXRlPTIwMjQwNzEwVDE2NTkxOVomWC1BbXotRXhwaXJlcz0zMDAmWC1BbXotU2lnbmF0dXJlPTE1ZDc5Zjc4MGQzNjIxY2ZmOTRiYjA3NDk1YTE1NzhlNTdmOWE2MTMxZDIyYjI4ZjBjMzYxM2JlYjA5OWVjNDAmWC1BbXotU2lnbmVkSGVhZGVycz1ob3N0JmFjdG9yX2lkPTAma2V5X2lkPTAmcmVwb19pZD0wIn0.GyOMPmy44BK6MU6GSCVX9ivjtbgERpeiZ3p9qjRRyBY)
![Screenshot 2023-12-21 at 15 20 03](https://private-user-images.githubusercontent.com/85044009/292231623-6f58a1a2-8587-4ba9-95e9-61a15ff58fd8.png?jwt=eyJhbGciOiJIUzI1NiIsInR5cCI6IkpXVCJ9.eyJpc3MiOiJnaXRodWIuY29tIiwiYXVkIjoicmF3LmdpdGh1YnVzZXJjb250ZW50LmNvbSIsImtleSI6ImtleTUiLCJleHAiOjE3MjA2MzEwNTksIm5iZiI6MTcyMDYzMDc1OSwicGF0aCI6Ii84NTA0NDAwOS8yOTIyMzE2MjMtNmY1OGExYTItODU4Ny00YmE5LTk1ZTktNjFhMTVmZjU4ZmQ4LnBuZz9YLUFtei1BbGdvcml0aG09QVdTNC1ITUFDLVNIQTI1NiZYLUFtei1DcmVkZW50aWFsPUFLSUFWQ09EWUxTQTUzUFFLNFpBJTJGMjAyNDA3MTAlMkZ1cy1lYXN0LTElMkZzMyUyRmF3czRfcmVxdWVzdCZYLUFtei1EYXRlPTIwMjQwNzEwVDE2NTkxOVomWC1BbXotRXhwaXJlcz0zMDAmWC1BbXotU2lnbmF0dXJlPTk2Nzc2N2YxMDA5MDQ3NDgxMmEyZGE5MmQ0ODc3OGY1YWJiYzFlZTJiMDQyYTQzZDBkMWQ4NTVjZjI2ZmYwZWUmWC1BbXotU2lnbmVkSGVhZGVycz1ob3N0JmFjdG9yX2lkPTAma2V5X2lkPTAmcmVwb19pZD0wIn0.lMXtI5MOZ3GmWYTCVKzONFgQAccDO2XsqXkgNdABTF8)
![Screenshot 2023-12-21 at 15 28 58](https://private-user-images.githubusercontent.com/85044009/292232220-d0163045-0884-4061-abe8-796708becc4c.png?jwt=eyJhbGciOiJIUzI1NiIsInR5cCI6IkpXVCJ9.eyJpc3MiOiJnaXRodWIuY29tIiwiYXVkIjoicmF3LmdpdGh1YnVzZXJjb250ZW50LmNvbSIsImtleSI6ImtleTUiLCJleHAiOjE3MjA2MzEwNTksIm5iZiI6MTcyMDYzMDc1OSwicGF0aCI6Ii84NTA0NDAwOS8yOTIyMzIyMjAtZDAxNjMwNDUtMDg4NC00MDYxLWFiZTgtNzk2NzA4YmVjYzRjLnBuZz9YLUFtei1BbGdvcml0aG09QVdTNC1ITUFDLVNIQTI1NiZYLUFtei1DcmVkZW50aWFsPUFLSUFWQ09EWUxTQTUzUFFLNFpBJTJGMjAyNDA3MTAlMkZ1cy1lYXN0LTElMkZzMyUyRmF3czRfcmVxdWVzdCZYLUFtei1EYXRlPTIwMjQwNzEwVDE2NTkxOVomWC1BbXotRXhwaXJlcz0zMDAmWC1BbXotU2lnbmF0dXJlPWNhMDk4ZDI3ZGVlNjA2MDBiZGExOTUzMTUyZDRmNDY0ZDQ1MTg4MzNhOThkOTM0NmE3MjI4OTY4YTlmMGU3Y2EmWC1BbXotU2lnbmVkSGVhZGVycz1ob3N0JmFjdG9yX2lkPTAma2V5X2lkPTAmcmVwb19pZD0wIn0.nFXYEaXFDSJV3t7GLkaAuAizwqWxA9qemBouiExySfs)
![Screenshot 2023-12-21 at 15 18 57](https://private-user-images.githubusercontent.com/85044009/292231545-4be52c21-13a5-46d4-8ad3-f33dd359ac33.png?jwt=eyJhbGciOiJIUzI1NiIsInR5cCI6IkpXVCJ9.eyJpc3MiOiJnaXRodWIuY29tIiwiYXVkIjoicmF3LmdpdGh1YnVzZXJjb250ZW50LmNvbSIsImtleSI6ImtleTUiLCJleHAiOjE3MjA2MzEwNTksIm5iZiI6MTcyMDYzMDc1OSwicGF0aCI6Ii84NTA0NDAwOS8yOTIyMzE1NDUtNGJlNTJjMjEtMTNhNS00NmQ0LThhZDMtZjMzZGQzNTlhYzMzLnBuZz9YLUFtei1BbGdvcml0aG09QVdTNC1ITUFDLVNIQTI1NiZYLUFtei1DcmVkZW50aWFsPUFLSUFWQ09EWUxTQTUzUFFLNFpBJTJGMjAyNDA3MTAlMkZ1cy1lYXN0LTElMkZzMyUyRmF3czRfcmVxdWVzdCZYLUFtei1EYXRlPTIwMjQwNzEwVDE2NTkxOVomWC1BbXotRXhwaXJlcz0zMDAmWC1BbXotU2lnbmF0dXJlPThmZDkzYTQxODdjNjlkYTI2NjA0OTExZGM4NzA0ZjA4ZDM3ZjA3NTQwZjM2NTk0YzEzMDBhZjMwNTBjY2Y3YWImWC1BbXotU2lnbmVkSGVhZGVycz1ob3N0JmFjdG9yX2lkPTAma2V5X2lkPTAmcmVwb19pZD0wIn0.IsymlBwfJYHmqcwkNLPgh6B7L3eI9Lq11AL0xxi82TE)
- 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
- 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
- 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!
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.
- Adepitan Oluwatosin @fiki2002