Skip to content

Foody is a sample food recipes Android application 📱 built to demonstrate the use of Modern Android development tools - (Kotlin, Coroutines, Flow, Hilt, Architecture Components, MVVM, Room, Retrofit, Moshi, Material Components).

Notifications You must be signed in to change notification settings

aptx113/Foody

Repository files navigation

Foody

API Build Status Profile

Foody is a sample food recipes application based on modern Android application tech-stacks and MVVM architecture.
This project is for focusing especially on the new library Hilt of implementing dependency injection.
Also fetching data from the network and integrating persisted data in the database via repository pattern.

Download

Go to the Releases to download the latest APK.

Feature

  1. Search recipes by selecting chips or entering keyword.

  1. Navigate to Details to check more recipe info.

  1. Add recipes to Favorite with multiple selection and deletion.

  1. Randomly show food joke.

  1. Display the last Recipe list when offline through cache.

Tech stack & Open-source libraries

  • Minimum SDK level 24
  • Kotlin based, Coroutines + Flow for asynchronous.
  • Gradle Kotlin DSL - For writing Gradle build scripts using Kotlin.
  • Jetpack
    • Constraintlayout - Construct MotionLayout to animate view.
    • Databinding - Bind UI components in the layouts to data sources in the app.
    • DataStore - Store user previously selected data asynchronously, consistently, and transactionally, overcoming some of the drawbacks of SharedPreferences.
    • Hilt - For dependency injection.
    • Lifecycle - Build lifecycle-aware components, like ViewModel and LiveData that can automatically adjust their behavior based on the current lifecycle state of an activity or fragment.
    • Navigation - Navigate across, into, and back out from the different pieces of content within the app.
    • Recyclerview - Use to efficiently display large sets of data.
    • Room - Construct a database using the abstract layer for offline cache.
    • ViewPager2 - Display Details in a swipeable format.
  • Third Party Library
    • Coil - Loading images.
    • Jsoup - To parse HTML.
    • Moshi - Parse and convert a JSON object into Kotlin objects.
    • OkHttp3 - Log the outgoing request and the incoming response.
    • Retrofit2 - Send requests to API and receive response.
    • Timber - For logging.
  • Material - Help to build material components like bottom navigation bar, floating action button.
  • detekt - Use static code analysis tool for the Kotlin to improve code smell.
  • Ktlint - To make code follow Kotlin official code style.
  • Architectural and Design pattern
    • MVVM
    • Observer
    • Adapter
    • Dependency Injection
    • Singleton

MAD Score

summary kotlin

Open API

Foody using the Spoonacular API for obtaining remote data.
Spoonacular API provides a RESTful API interface to highly detailed objects built from plenty of lines of data related to Food Recipes.

Contact

danteyu.studio@gmail.com

Dante Yu

About

Foody is a sample food recipes Android application 📱 built to demonstrate the use of Modern Android development tools - (Kotlin, Coroutines, Flow, Hilt, Architecture Components, MVVM, Room, Retrofit, Moshi, Material Components).

Topics

Resources

Stars

Watchers

Forks

Packages