Movietrackr is an app for saving, rating and writing reviewing for your favorite movies using TheMovieDB API and Firebase.
- Authentication with Firebase
- Posting reviews on movies
- Adding movies to Watch Later
- Looking up movies
- Movie Details page
- Profile page
- Settings page
- Custom widgets
- Updating account (Username, Bio)
- Opening other apps from links (YouTube, Browsers)
| Package | Usage |
|---|---|
| http | Making HTTP requests |
| firebase_core | To use the Firebase Core API |
| firebase_auth | To use the Firebase Auth API |
| firebase_database | To use the Firebase Databse API |
| flutter_dotenv | Adding and using .env files |
| google_fonts | Using fonts from fonts.google.com |
| photo_view | Opening and zooming in on pictures |
| google_nav_bar | Navbar for main_screen |
| country_flags | Using country flag icon |
| url_launcher | Opening other apps from links |
| font_awesome_flutter | Icon package |
| flutter_launcher_icons | Updating the app's icon |
| flutter_native_splash | Native splash for when opening the app |
- Singleton - for objects that communicate with TheMovieDB API and Firebase
This project is licensed under the terms of the MIT license.
- Clone the repository
- Register an account on TheMovieDB and create your API Key.
- Create a .env file in the root directory and add the your API Key:
API_KEY=-YOUR API_KEY-
- Create a Firebase project and add an Android and IOS app.
- Go to Authentication, then to Sign-in Method and add Email/Password
- Go to Realtime Database and add the following rules:
{
"rules": {
"reviews": {
".read": true,
"$movieId": {
".indexOn": ["timestamp"],
"$userId": {
".write": "auth != null && auth.uid == $userId",
".validate": "newData.hasChildren(['content', 'rating', 'username', 'timestamp'])"
}
}
},
"users": {
"$userId": {
".read": "auth != null && auth.uid == $userId",
".write": "auth != null && auth.uid == $userId",
"bio": {
".validate": "newData.isString() && newData.val().length <= 150"
}
}
}
}
}









