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

Overview

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

Comments
  • Create the NavHost inside the MainActivity for our Composable Screens

    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
    good first issue hacktoberfest 
    opened by Kardelio 5
  • Add copyright licence

    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

    opened by zeusalmighty717 2
  • Dish view model added

    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.

    opened by Hiteshpatel10 2
  • Stops DishViewModel being called again on every recomposition and configuration change

    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.

    opened by danielctf 0
  • Search and pin functionality

    Search and pin functionality

    It would be nice if the users would be able to search for their wanted dishes and also pin their favourites and maybe add a filter so they could see their favourites?

    opened by yoyonika 0
  • Publish the app to the Google Play Store

    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.

    opened by lbarqueira 0
Owner
Benjamin Kadel
Senior Android Developer working in Berlin (DE) with an aspiring Tech/Dev YouTube Channel
Benjamin Kadel
🎯 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

Sanju S 840 Jan 2, 2023
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

null 1 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. This is a sample app that uses kotlin coroutines flow , stateflow. This

null 4 Jul 15, 2022
Kotlin, MVVM, Navigation Component, Hilt, Jetpack Compose, Coroutine, MutableState, Retrofit2, Glide

MVVM-RecipeApp Kotlin, MVVM, Navigation Component, Hilt, Jetpack Compose, Coroutine, MutableState, Retrofit2, Glide Main Features Kotlin MVVM Jetpack

Ali Assalem 5 Jul 28, 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

null 3 Sep 9, 2022
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

Umer Javaid 0 Jan 30, 2022
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

Rushikesh Suryawanshi 1 Dec 11, 2021
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

Johnny Miller 12 Jul 7, 2022
❤️ 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

Geovani Amaral 4 Aug 26, 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

Areg Petrosyan 42 Dec 23, 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

null 0 Nov 6, 2021
MVVM ,Hilt DI ,LiveData ,Flow ,Room ,Retrofit ,Coroutine , Navigation Component ,DataStore ,DataBinding , ViewBinding, Coil

MVVM ,Hilt DI ,LiveData ,Flow ,Room ,Retrofit ,Coroutine , Navigation Component ,DataStore ,DataBinding , ViewBinding, Coil

Ali Assalem 12 Nov 1, 2022
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.

null 4 Nov 29, 2022
Basic-MVVM-Example - Basic Android Application MVVM

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

null 3 Dec 8, 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.

Gabriel Brasileiro 36 Oct 16, 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.

Odhiambo Brandy 4 Apr 15, 2022
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

Ar Razy Fathan Rabbani 4 Nov 26, 2022