Thanks to visit codestin.com
Credit goes to github.com

Skip to content

luisfagundes94/foodlab

Repository files navigation

Foodlab (WIP)

An Android application for browsing recipes given ingredients.

Features:

  • Search recipes by ingredients
  • Save recipes for later
  • Search recipes by meal
  • Watch recipe preparation videos

Screenshots

Architecture

Architecture that is meticulously planned is paramount for an application's scalability, and all architectural designs share a universal aim - to handle the complexity of your application. This might not be a concern for smaller-scale apps, but it can be incredibly advantageous when working on apps with an extended development timeline and a bigger team.

Robert C. Martin introduced the concept of Clean Architecture in 2012 via the Clean Code Blog, and it abides by the SOLID principle.

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

Tech Stack

This project uses many of the popular libraries, plugins and tools of the android ecosystem.

Compose

  • Material Design 3 - Build Jetpack Compose UIs with ready to use Material Design Components.
  • Foundation - Write Jetpack Compose applications with ready to use building blocks and extend foundation to build your own design system pieces.
  • UI - Fundamental components of compose UI needed to interact with the device, including layout, drawing, and input.
  • Lifecycle-ViewModel - Perform actions in response to a change in the lifecycle status of another component, such as activities and fragments.
  • HiltViewModel - Hilt provides a standard way to incorporate Dagger dependency injection into an Android application.
  • Lottie - Lottie is a mobile library for Android and iOS that parses Adobe After Effects animations exported as json with Bodymovin and renders them natively on mobile!

Accompanist

  • SwipeRefresh - A library which provides a layout which provides the swipe-to-refresh UX pattern, similar to Android's SwipeRefreshLayout.
  • Navigation - A library which provides Compose Material support for Jetpack Navigation Compose. This features composable bottom sheet destinations.

Jetpack

  • DataStore - Jetpack DataStore is a data storage solution that allows you to store key-value pairs or typed objects with protocol buffers.
  • Android KTX - Provide concise, idiomatic Kotlin to Jetpack and Android platform APIs.
  • AndroidX - Major improvement to the original Android Support Library, which is no longer maintained.
  • Lifecycle - Perform actions in response to a change in the lifecycle status of another component, such as activities and fragments.
  • ViewModel - Designed to store and manage UI-related data in a lifecycle conscious way. The ViewModel class allows data to survive configuration changes such as screen rotations.
  • Room - Provides an abstraction layer over SQLite used for offline data caching.

Dependency Injection

Network

Core

  • Coroutines - Library Support for coroutines.
  • Flow - Flows are built on top of coroutines and can provide multiple values. A flow is conceptually a stream of data that can be computed asynchronously.

Logging

  • Timber - A logger with a small, extensible API which provides utility on top of Android's normal Log class.

Testing

  • JUnit4 - JUnit is a simple framework to write repeatable tests.
  • Mockk - A modern Mockk library for UnitTest.
  • Turbine - Small testing library for kotlinx.coroutines Flow
  • Coroutine-Test - Provides testing utilities for effectively testing coroutines.

Plugin

  • GradleVersionCatalog - Gradle's support for declaring and using dependencies.
  • KSP - Kotlin Symbol Processing (KSP) is an API that you can use to develop lightweight compiler plugins.

About

No description, website, or topics provided.

Resources

Stars

Watchers

Forks

Releases

No releases published

Packages

No packages published

Languages