Personal project developed with the Android SDK.
-
All recipe information is provided by Spoonacular API.
-
Register and login is provided by Herokuapp - 3.party API
Onboarding | Login And Register | List of Recipes | Detail of Recipe |
Share Recipe on Social Media | Your Favorites | Settings | User UpdateSettings |
- Kotlin - First class and official programming language for Android development.
- Coroutines - For asynchronous and more..
- Flow - A cold asynchronous data stream that sequentially emits values and completes normally or with an exception.
- Android Architecture Components - Collection of libraries that help you design robust, testable, and maintainable apps.
- LiveData - Data objects that notify views when the underlying database changes.
- ViewModel - Stores UI-related data that isn't destroyed on UI changes.
- ViewBinding - Generates a binding class for each XML layout file present in that module and allows you to more easily write code that interacts with views.
- Room - SQLite object mapping library.
- DataStore Preferences - Jetpack DataStore is a data storage solution that allows you to store key-value pairs or typed objects with protocol buffers.
- Navigation Component - Navigation occurs between your app's destinations—that is, anywhere in your app to which users can navigate. These destinations are connected via actions.
- Dependency Injection -
- Hilt-Dagger - Standard library to incorporate Dagger dependency injection into an Android application.
- Hilt-ViewModel - DI for injecting
ViewModel
.
- Retrofit - A type-safe HTTP client for Android and Java.
- okhttp-logging-interceptor - logging HTTP request related data.
- Gson - Gson is a Java library that can be used to convert Java Objects into their JSON representation
- Coil-kt - An image loading library for Android backed by Kotlin Coroutines.
- Offline Caching
- Material Components for Android - Modular and customizable Material Design UI components for Android.
- Menu - Contextual Menu- Menus are a common user interface component in many types of applications.
- Motion Layout- MotionLayout is a layout type that helps you manage motion and widget animation in your app.
- Shimmer Effect - ShimmerRecyclerView is an custom RecyclerView library based on Facebook's Shimmer effect for Android library
- Gradle Kotlin DSL - For writing Gradle build scripts using Kotlin.
This app uses MVVM (Model View View-Model) architecture.
favorite_recipe_table | recipes_table | ||||||||||||
|
|
com.fatihhernn.recipe # Root Package
.
├── data # For data handling.
│ ├── local # Local Persistence Database. Room (SQLite) database
| │ ├── dao # Data Access Object for Room
│ ├── remote # Remote Data Handlers
| │ ├── api # Retrofit API for remote end point.
│ └── repository # Single source of data.
|
├── model # Model classes
|
├── di # Dependency Injection
│ └── module # DI Modules
|
├── ui # Activity/View layer
│
│ ├── activities # Main Screen Activity & ViewModel
| │ ├── adapter # Adapter for RecyclerView
| │ └── viewmodel # ViewHolder for RecyclerView
│ └── fragments # Detail Screen Activity and ViewModel
|
└── utils # Utility Classes / Kotlin extensions