A JAVA application that allow users to explore new and delicious food recipes
- Download the repository
- Download Android Studio
- Android Device. Or install Virtual one with Target: Android 11.0 API 30
$ git clone https://github.com/kabhamo/Food-Recipe-Application.git
$
The Application interact with a REST API from Forkify API.
The app will retrieve information from the website and display it in various view types.
I love food, I believe I am a good cooker so I made this application so it can help me to keep updated with the many delicious recipes we all love.
I use this Technology
to make it work and easy to use. I am so happy to share it with everyone
See the list of all available queries Search Queries.
Architecture Diagram
- MVVM Architecture: ViewModel, Repository, Client structure
- REST API Retrofit2
- Data Base Cache
- Singletons
- RecyclerView Pagination
- Observables, LiveData, MutableLiveData and MediatorLiveData
- Displaying Images using Glide
- SearchViews
- Async Task, ThreadPools, OOP
- Network Security Config for HTTP (API 28+)
dependencies {
def retrofitVersion = '2.4.0'
def lifecycle_version = "1.1.1"
def supportVersion = "28.0.0"
def glideVersion = "4.12.0"
implementation 'androidx.appcompat:appcompat:1.3.1'
implementation 'com.google.android.material:material:1.4.0'
implementation 'androidx.constraintlayout:constraintlayout:2.1.1'
testImplementation 'junit:junit:4.13.2'
androidTestImplementation 'androidx.test.ext:junit:1.1.3'
androidTestImplementation 'androidx.test.espresso:espresso-core:3.4.0'
//retrofit
//noinspection GradleDependency
implementation "com.squareup.retrofit2:retrofit:$retrofitVersion"
// Retrofit gson converter
//noinspection GradleDependency
implementation "com.squareup.retrofit2:converter-gson:$retrofitVersion"
// ViewModel and LiveData
implementation "android.arch.lifecycle:extensions:$lifecycle_version"
// CardViews
implementation "androidx.cardview:cardview:1.0.0"
// RecyclerViews
implementation "androidx.recyclerview:recyclerview:1.2.1"
// For control over item selection of both touch and mouse driven selection
implementation "androidx.recyclerview:recyclerview-selection:1.1.0"
// Design Support
implementation "com.android.support:design:$supportVersion"
// Glide
//noinspection GradleDependency
implementation "com.github.bumptech.glide:glide:$glideVersion"
annotationProcessor "com.github.bumptech.glide:compiler:$glideVersion"
// Circle ImageView
implementation 'de.hdodenhof:circleimageview:3.1.0'
}
- POSTMAN: https://www.postman.com/
- MVVM: https://www.tutorialspoint.com/mvvm/index.htm
- Retrofit: https://square.github.io/retrofit/
- RecyclerView: https://blog.mindorks.com/how-does-recyclerview-work-internally
- Android Developer: https://developer.android.com/