Skip to content

My application have been working with both Remote and local data sources. And for Remote data source I have used a third party API for food recipes, called Spoonacular.

Notifications You must be signed in to change notification settings

fatihhernn/RecipeApp

Repository files navigation

Food Recipes App

Personal project developed with the Android SDK.


Onboarding Login And Register List of Recipes Detail of Recipe
.android .android .android .android
Share Recipe on Social Media Your Favorites Settings User UpdateSettings
.android .android .android .android

Built With 🛠

  • 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.

Architecture

This app uses MVVM (Model View View-Model) architecture.

Room Database Table

favorite_recipe_table recipes_table
Variable Name Data Type
id INT
text NVARCHAR
Variable Name Data Type
id INT
foodRecipe NVARCHAR

Package Structure

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

About

My application have been working with both Remote and local data sources. And for Remote data source I have used a third party API for food recipes, called Spoonacular.

Topics

Resources

Stars

Watchers

Forks

Releases

No releases published

Packages

No packages published

Languages