Skip to content

kocerenes/FoodRecipes

Repository files navigation

FoodRecipes

An application that allows users to easily find recipes with the necessary filtering and search features.

App GIF

Light Theme Dark Theme
Fist 3

Features 🕹

  • 100% Kotlin-only
  • Following MVVM Architectural Design Pattern
  • Dark theme
  • Multi-Activity
  • Local Caching

Tech stack

  • ✅ MVVM with Clean Architecture
  • Kotlin Flow - In coroutines, a flow is a type that can emit multiple values sequentially, as opposed to suspend functions that return only a single value.
  • LiveData - is an observable data holder class. Unlike a regular observable, LiveData is lifecycle-aware, meaning it respects the lifecycle of other app components, such as activities, fragments, or services.
  • Coroutines - A concurrency design pattern that you can use on Android to simplify code that executes asynchronously.
  • Navigation Component - Handle everything needed for in-app navigation. asynchronous tasks for optimal execution.
  • Safe-Args - For passing data between destinations
  • Dagger-Hilt - A dependency injection library for Android that reduces the boilerplate of doing manual dependency injection in your project.
  • ViewModel - Easily schedule asynchronous tasks for optimal execution.
  • Retrofit- Retrofit is a REST client for Java/ Kotlin and Android by Square inc under Apache 2.0 license. Its a simple network library that is used for network transactions. By using this library we can seamlessly capture JSON response from web service/web API.
  • OkHttp - Doing HTTP efficiently makes your stuff load faster and saves bandwidth.
  • Coil - An image loading library for Android backed by Kotlin Coroutines
  • View Binding - a feature that allows you to more easily write code that interacts with views.
  • Data Binding - The Data Binding Library is a support library that allows you to bind UI components in your layouts to data sources in your app using a declarative format rather than programmatically.
  • Lifecycle - As a user navigates through, out of, and back to your app, the Activity instances in your app transition through different states in their lifecycle.
  • Room - The Room persistence library provides an abstraction layer over SQLite to allow for more robust database access while harnessing the full power of SQLite.
  • DataStore - Jetpack DataStore is a data storage solution that allows you to store key-value pairs or typed objects with protocol buffers. DataStore uses Kotlin coroutines and Flow to store data asynchronously, consistently, and transactionally.
  • Jsoup - It provides a very convenient API for fetching URLs and extracting and manipulating data, using the best of HTML5 DOM methods and CSS selectors.