Skip to content

Recipes is a simple demo app based on modern Android application tech-stacks and CLEAN architecture.

Notifications You must be signed in to change notification settings

AnEstevez/recipes

Repository files navigation

Recipes

Recipes is a simple demo app based on modern Android application tech-stacks and CLEAN architecture.


Tech stack & Open-source libraries

  • ViewBinding - Allows to more easily write code that interacts with views.
  • ViewModel - State Holder. Responsible for the production of UI state, contains the necessary logic for that task.
  • Lifecycle - Lifecycle-aware components.
  • Navigation - In-app navigation.
  • SafeArgs - Passing data while navigating between fragments.
  • Room - Database.
  • Kotlin Coroutines - A concurrency design pattern to simplify code that executes asynchronously.
  • Kotlin Flows - In coroutines, a flow is a type that can emit multiple values sequentially, as opposed to suspend functions that return only a single value. For example, you can use a flow to receive live updates from a database.
  • Dagger-Hilt - Dependency injection.
  • Glide - Image loading.
  • Retrofit2 & Gson - REST API consumption.
  • MockWebServer - A scriptable web server for testing HTTP clients.
  • OkHttp Idling Resource - An Espresso IdlingResource for OkHttp.
  • Google Play Services Location - Fused location provider.
  • Timber - A logger with a small, extensible API which provides utility on top of Android's normal Log class.
  • SpinKit - Loading animations.
  • Shimer - To add a shimmering effect to any view.
  • Material-Components Modular and customizable Material Design UI components for Android.
  • Mockito - Mocking framework for unit tests.
  • Leakcanary - A memory leak detection library.

Architecture

CLEAN Architecture




MVVM Architecture & Repository Pattern




Single Source Of Truth & Offline Mode




Features

Preview

Normal Internet Connection

Slow Internet Connection

No Internet Connection

MAD Scorecards

API

TheMealDB is an open, crowd-sourced database of Recipes from around the world. They also offer a free JSON API for anyone wanting to use it, with additional features for subscribers. Recipes uses the TheMealDB API. Obtain your API_KEY TheMealDB and paste it to the gradle.properties file to try the app.