FoodFlow is an Android app that provide users with a variety of meals to plan their weekly meals, adding to favorites or just exploring meals.
- About FoodFlow
- Features
- Screenshots
- Technologies and Libraries Used
- Dependencies
- Installation
- Contact
FoodFlow helps users plan their weekly meals by providing them with a list of meals from diffrenet categories, and areas. With FoodFlow, users can search for meals or filter a list of meals by category, area, or ingredient. The app also has a feature to add a certain meal to favorites, making it easy for users to access their favorite meals whenever they want.
- List meals from different areas and categories
- Plan weekly meals
- Search for meals
- Filter searched meals by category, area, or ingredient
- Add meals to favorites
- View favorites and week meals in offline mode
- Show a full detailed description about meal includes country, category, ingredients, instructions, and a tutorial video
- MVP: For implementing the Model-View-Presenter architecture pattern
- Repository Pattern: For separating data storage and access from the rest of the app
- Singleton Pattern: To provides a global point of access to certain classes like db and api classes
- Retrofit: For making HTTP requests and handling API responses from www.themealdb.com
- Room: For local data storage and access
- SharedPrefs: For storing user credentials so provide auto login
- RxJava: For reactive programming and asynchronous data flow
- Navigation Component: For implementing navigation in the app
- Firebase Authentication: For email and Google authentication
- Youtube Player: For playing videos in the app
- Facebook Shimmer Animation: For displaying loading animations
- Lottie Animation: For displaying vector animations
The FoodFlow app uses the following dependencies:
dependencies {
def room_version = "2.5.1"
def nav_version = "2.5.3"
implementation 'androidx.appcompat:appcompat:1.6.1'
implementation 'androidx.constraintlayout:constraintlayout:2.1.4'
//Material Design
implementation 'com.google.android.material:material:1.9.0'
//Retrofit
implementation 'com.squareup.retrofit2:retrofit:2.9.0'
implementation 'com.squareup.retrofit2:converter-gson:2.3.0'
//Network Image
implementation 'com.github.bumptech.glide:glide:4.15.1'
//Circular Image
implementation 'de.hdodenhof:circleimageview:3.1.0'
//Navigation
implementation "androidx.navigation:navigation-fragment:$nav_version"
implementation "androidx.navigation:navigation-ui:$nav_version"
//Room
implementation "androidx.room:room-runtime:$room_version"
annotationProcessor "androidx.room:room-compiler:$room_version"
//lottie animation
implementation "com.airbnb.android:lottie:6.0.0"
//FireBase Authentication
// Import the BoM for the Firebase platform
implementation platform('com.google.firebase:firebase-bom:32.0.0')
implementation 'com.google.firebase:firebase-auth'
// Google Play services library
implementation 'com.google.android.gms:play-services-auth:20.5.0'
//Youtube WebView Player
implementation 'com.pierfrancescosoffritti.androidyoutubeplayer:core:12.0.0'
//Facebook Shimmer Animation
implementation 'com.facebook.shimmer:shimmer:0.5.0'
//RXJava
implementation 'io.reactivex.rxjava2:rxandroid:2.1.1'
// RxAndroid
implementation 'io.reactivex.rxjava3:rxandroid:3.0.0'
//Retrofit Rx adapter
implementation 'com.squareup.retrofit2:adapter-rxjava2:2.9.0'
//Room To Rx
implementation "androidx.room:room-rxjava2:2.5.1"
}
To install and run the FoodFlow app, you can follow these steps:
-
Clone the repository to your local machine:
git clone https://github.com/mahmoodawd/FoodFlow.git
-
Open the project in Android Studio.
-
Build the project using the Gradle build system.
-
Run the app on an emulator or a physical device.
That's it! The app should now be up and running on your device.