Simple Recipe/Dish list Android App that uses Compose, MVVM & Hilt.

Last update: Apr 9, 2022

Disher

A very simple recipe / dish list app for Android.

If you are coming here from YouTube

Then you will want to select the live-stream branch. That is where all the code that I have done during the live streams lives!


Contributing

This app is currently a work in progress and was started during my YouTube Live Stream (First Video Here: https://www.youtube.com/watch?v=MpYRRB3nLSU)

HOWEVER I want to enable others to get involved with this project and contribute to this codebase, maybe as part of Hacktoberfest or simply to get your hands dirty in a MODERN android codebase.

Anyone and everyone is welcome to contribute. If you would like to contribute then please check the issues tab above and I will make sure to update a list of potential "Things-to-do" and label them correctly.

Side Note: For anyone that is worried that this might effect my future upcoming live streams, where I will continue to work on this repository, then please do NOT fear, I have branched away from the main branch and created a branch called live-stream that only I will be able to update, however when you contribute you can make your PR and point it directly at main and I will simply work happily and seperately on my stream on my little isolated branch... (p.s. thank you for worrying about me)

Important things to note

The aim of this app is to be a proper, professional, modern & clean app. That means that my branch live-stream will always attempt to keep strictly to the MVVM (clean) architecture pattern, however this does not HAVE TO be the same in the main branch.

Feel free to code however you like and if you would like, I will happily give you feedback in order to help you learn if you would like it...

Progress & API

So the app relies upon the excellent mealdb api that provides the caller with different food based information.

For this project the basic idea is to have 3 screens:

  • The List of Food Categories screen (Done in Stream #1) [CategoryScreen]
  • The List of Dishes in a category screen (Not Started)
  • The Individual Dish Detail screen (Not Started)

The idea was for the first screen to be the CategoryScreen and there the user will see a list of food categories, then the user can click one of these categories and be taken to the List of dishes screen where they will see a different list of all the dishes that exist in that category. Finally the user can click one of these dishes to bring up the 3rd screen Dish detail screen and see information about the specific dish, how to cook it, ingredients, image etc...

For each screen there is a different end point on the mealdb api, these are as follows:

Where you see underscores above (____) this is where missing information needs to go, this information will be decided on what the user clicks as part of their journey. For the filter api there we need the name of a category and for the lookup api there we need a unique dish id.

What next

Well really simple... Go check the issues tab if you want to get involed.

In the future, if you want a build of this app then you will have two choices...

  1. A community open source version of the app, which will hopefully have been built by many contributors. For that version you need to use the main branch.
  2. A version built solely by me, that was built during the YouTube live streams. For that version you need to use the live-stream branch.

Good Luck! You got this, give it a go, literally nothing can go wrong! BK

GitHub

https://github.com/Kardelio/Disher
Comments
  • 1. Create the NavHost inside the MainActivity for our Composable Screens

    Note: Please raise your PR against the main branch when you are ready!

    This Issue:

    For this issue you need to simply create the NavHost that will wrap our individual screen composables and maybe even create 3 composables within the NavHost that will provide us space to create our 3 screen composable functions (3 screens are described in the README.md)

    For help or information check out this page: https://developer.android.com/jetpack/compose/navigation

    Extra Points:

    • Create a navController
    • Setup routes for the 3 screens described in the README.md
    Reviewed by Kardelio at 2021-10-01 21:19
  • 2. Add copyright licence

    If a repository has no license, then all rights are reserved and it is not Open Source or Free. You cannot modify or redistribute this code without explicit permission from the copyright holder.

    More info

    Reviewed by zeusalmighty717 at 2021-11-09 18:25
  • 3. Dish view model added

    I tried to follow the project structure, please review my PR. Dish viewmodel is added mention in issue #3 and Dish useCase and repository also added mention in #4.

    Reviewed by Hiteshpatel10 at 2021-10-05 18:03
  • 4. Stops DishViewModel being called again on every recomposition and configuration change

    DishViewModel.getAllDish was being called on every recomposition and configuration change (i.e. screen orientation change). LaunchedEffect solves the recomposition problem but not a configuration change. SavedStateHandle helps to handle both cases.

    Reviewed by danielctf at 2021-12-11 20:43
  • 5. Publish the app to the Google Play Store

    What tasks to perform to publish the app to the Google Play Store? What concerns should we have when building the release version of the app? How to set up a Continuous Delivery and Deployment workflow?

    Maybe we can separate in various issues the above questions. Feel free to do that.

    I think it would be important to look beyond development to the entire process of delivering an application to the end-user.

    Reviewed by lbarqueira at 2021-11-02 12:10
  • 6. Local persistence/caching

    It would be nice, once the meal information is retrieved from the remote service to be available to the users locally, even when the mobile device is offline.

    Reviewed by dancojocar at 2021-10-29 19:15
  • 7. Create the UseCase & Repository for the DishesScreen

    Note: Please raise your PR against the main branch when you are ready!

    This issue relates to this issue: #3

    This Issue:

    For this issue you need to create the UseCase & Repository class for the Dish data to be gathered and processed. The usecase and repo should be able to get and pass along a list of dishes from the filter api call that will be called when the user clicks on a specific category and wishes to see the dishes in this list...

    For help or information you can check out the already existing app/src/main/java/com/example/disher/category/usecase/GetCategoriesUseCase.kt & app/src/main/java/com/example/disher/category/repository/CategoryRepository.kt for inspiration.

    Extra Points:

    • Make sure you use nice clean package structure
    • Use the operator invoke function in the usecase
    Reviewed by Kardelio at 2021-10-01 21:30
🎯 Einsen is a prioritization app that uses Eisenhower matrix technique as workflow to prioritize a list of tasks & built to Demonstrate use of Jetpack Compose with Modern Android Architecture Components & MVVM Architecture.
🎯 Einsen is a prioritization app that uses Eisenhower matrix technique as workflow to prioritize a list of tasks & built to Demonstrate use of Jetpack Compose with Modern Android Architecture Components & MVVM Architecture.

?? Einsen Einsen is a prioritization app that uses Eisenhower matrix technique as workflow to prioritize a list of tasks & built to Demonstrate use of

May 15, 2022
This repository contains a detailed sample app that implements MVVM architecture using Hilt, Coroutines, Retrofit and Compose

Saber News App sample project to explain how to build solid, clean architected App using MVVM and repository architecture Techniques Kotlin Clean arch

Dec 26, 2021
Android MVVM with Single Activity sample app that uses kotlin coroutines flow
Android MVVM with Single Activity sample app that uses kotlin coroutines flow

Android MVVM with Single Activity sample app that uses kotlin coroutines flow. This is a sample app that uses kotlin coroutines flow , stateflow. This

Apr 8, 2022
App kotlin with flow, paging 3, MVVM, Room, Dagger hilt

TMDBTest App kotlin with flow, paging 3, MVVM, Room, Dagger hilt Para compilar la app se tiene que descargar el proyecto. Luego poner la APIKEY de TMD

Feb 22, 2022
NY Times - New app built using MVVM and Hilt
NY Times - New app built using MVVM and Hilt

NYTimes A simple app to hit the NY Times Most Popular Articles API and show a li

Jan 30, 2022
Shopping List App Using MVVM
Shopping List App Using MVVM

Shopping_List-MVVM Shopping List App to add Shopping Items APK Link Here About The Project Uses Android Room Database to store Shopping Items Uses MVV

Dec 11, 2021
Android Jetpack MVVM Boilerplate. Integrated with Jetpack dependencies, Hilt, Room, Okhttp, Retrofit, etc.
Android Jetpack MVVM Boilerplate. Integrated with Jetpack dependencies, Hilt, Room, Okhttp, Retrofit, etc.

Android Jetpack MVVM Boilerplate Android Jetpack MVVM Boilerplate a Jetpack based, MVVM boilerplate template project for Modern Android. Features Here

Oct 27, 2021
❤️ Android Ghibli using Hilt, Motion, Coroutines, Jetpack (ViewModel) based on MVVM architecture.

Glibhi ❤️ Android Ghibli using Hilt, Motion, Coroutines, Jetpack (ViewModel) based on MVVM architecture. Tech stack & Open-source libraries Minimum SD

Mar 11, 2022
A sample project in Kotlin to demonstrate AndroidX, MVVM, Coroutines, Hilt, Room, Data Binding, View Binding, Retrofit, Moshi, Leak Canary and Repository pattern.

This repository contains a sample project in Kotlin to demonstrate AndroidX, MVVM, Coroutines, Hilt, Room, Data Binding, View Binding, Retrofit, Moshi, Leak Canary and Repository pattern

May 9, 2022
MVVM + Clean + Hilt + Mockk

Android - MarvelApp What is this repository for? This repository is to show you my skills programming native Android. If you are interested in my prof

Nov 6, 2021
Chat App MVVM + Clean ArchitectureChat App MVVM + Clean Architecture
Chat App MVVM + Clean ArchitectureChat App MVVM + Clean Architecture

Chat App MVVM + Clean Architecture This Android application built using MVVM + Clean Architecture architecture approach and is written 100% in Kotlin.

Oct 14, 2021
Basic-MVVM-Example - Basic Android Application MVVM
Basic-MVVM-Example - Basic Android Application MVVM

Android's MVVM Architecture in Kotlin Why a simple app ? Because it's easier to

Jan 26, 2022
MVVM Redux is a lightweight lib to help you apply the redux concepts in your project based in MVVM.

MVVM Redux is a lightweight lib to help you apply the redux concepts in your project based in MVVM.

Apr 8, 2022
A simple app that consumes The GitHub APIs to display github users. The aim was to learn about different jetpack libraries, built with MVVM pattern.
A simple app that consumes The GitHub APIs to display github users. The aim was to learn about different jetpack libraries, built with MVVM pattern.

A simple app that consumes The GitHub APIs to display github users. The aim was to learn about different jetpack libraries, built with MVVM pattern.

Apr 15, 2022
Simple news app using MVVM
Simple news app using MVVM

Simple News App Simple news app android using MVVM Screenshots News API key News App uses the News API to load news. To use the API, you will need to

Mar 11, 2022
simple app used Kotlin MVVM Dagger2 Room Coroutines Retrofit2

Exhibits Application which retrieves data from Webserver (via Retrofit), saves it into Room and get from it if user is offline. There are applying MVV

Oct 14, 2021
Oasis is a simple gym progress-tracking app built on MVVM architecture.
Oasis is a simple gym progress-tracking app built on MVVM architecture.

Oasis About Oasis is a simple gym progress-tracking app built on MVVM architecture. Built with Kotlin Coroutines Flow Firebase Auth Firebase Firestore

Feb 7, 2022