Modern Food Recipes App – Android Development with Kotlin

Modern Food Recipes App – Android Development with Kotlin

English | MP4 | AVC 1920×1080 | AAC 48KHz 2ch | 15 Hours | 6.84 GB

Develop beautiful and fully functional Android App in Android Studio using the power of Kotlin programming language.

Hello there and welcome to my course, in this course I’m going to teach you how to create a fully functional Android application using the power of Kotlin programming language. We are going to develop Food Recipes application, where we can browse recipes from various different kind of meal and diet types. This App Design will be a lot similar to the one from my Material UI Design course which I made a while ago.

Our application will work with both Remote and local data sources. And for Remote data source we will use a third party API for food recipes, called Spoonacular. I’m going to teach you how to establish connection between your app and the server. So basically we will send GET Request to our API and receive a list of food recipes as a Response. Also our app will be able to handle no internet connection, and store or cache the data localy to our database when it’s needed.

Also from our application we will be able to search recipes from our API directly. So if you have your favorite flavor you can search it here and probably you’ll find many amazing recipes. Next our app will have Favorites Fragment where we can save our favorite recipes for later use when we need them. And finally our app will have it’s fun side, and that is food joke fragment.

What you’ll learn

  • Develop a fully functional Android App
  • Food Recipes Android app
  • ROOM Database
  • Dependency Injection – Dagger-Hilt
  • Retrofit
  • Offline Cache
  • Local & Remote Data Sources
  • Kotlin
  • Kotlin Coroutines
  • Android Architecture Component
  • Navigation Component
  • DataStore Preferences
  • Data Binding
  • ViewModel
  • AndroidViewModel
  • LiveData
  • Flow
  • DiffUtil
  • RecyclerView
  • Search Recyclerview
  • REST API
  • Client – Server Communication
  • Send HTTP Request
  • Parse HTTP Response
  • Dark and Light Theme
  • Night Mode
  • Motion Layout
  • Material Components
  • Material Design
  • Create Shimmer Effect
  • Database Inspector
  • ViewPager
  • Create Contextual Action Mode
  • Share Data with Other Apps
  • Create Modal Bottom Sheet
  • Nice looking UI Design
  • And more…
Table of Contents

Introduction
1 Introduction
2 Application Design
3 Application Preview
4 Project Structure Overview
5 Introducing with API
6 API Response Example

Navigation Component Setup
7 Project Setup
8 Navigation Component Setup

Design RecipesFragment Layout
9 Design RecipesFragment Layout
10 Design RecipesRowLayout
11 Design Recyclerview Placeholder Layout

Start with Retrofit
12 Introducing with Retrofit
13 Generate Model classes for API
14 Create Constants class
15 Create RecipesApi interface
16 Project Structure Overview & RemoteDataSource class

Introducing with Dependency Injection
17 Dependency Injection Overview
18 Manual Dependency Injection
19 Dagger Basics
20 Hilt – Dependency Injection Library Part 1
21 Hilt – Dependency Injection Library Part 2
22 Component Scoping

Dagger-Hilt Setup – NetworkModule
23 Create MyApplication class
24 Create NetworkModule
25 Inject RemoteDataSource class
26 Create and Inject Repository class
27 Create NetworkResult class
28 Create and Inject MainViewModel class

Introducing with Data Binding
29 Introducing with Data Binding
30 Binding Adapters

Display API Data in Recyclerview
31 Create RecipesAdapter class
32 DiffUtil – Create RecipesDiffUtil class
33 Create RecipesRowBinding class
34 RecipesFragment – Connect the Dots
35 Create RecipesViewModel class
36 Let’s Recap

Introducing with ROOM Library
37 Introducing with ROOM Library

ROOM Database
38 Offline Caching
39 Introducing with Kotlin Flow
40 Create Entity (RecipesEntity)
41 Create DAO (RecipesDao)
42 Create Type Converter (RecipesTypeConverter)
43 Create Database (RecipesDatabase)

Dagger-Hilt Setup – DatabaseModule
44 Create DatabaseModule
45 Create and Inject LocalDataSource
46 MainViewModel – Offline Cache
47 RecipesFragment – Read from Database
48 ObserveOnce – Extension Function
49 Database Inspector
50 Placeholder Image – Error
51 Create RecipesBinding class

Introducing with DataStore Preferences
52 Introducing with DataStore Preferences

Add Bottom Sheet
53 About BottomSheet
54 Design RecipesBottomSheet
55 Navigate to RecipesBottomSheet
56 Customize Chip Style
57 Create and Inject DataStoreRepository class
58 Modify and Inject RecipesViewModel
59 RecipesBottomSheet – Persist Selected Chips
60 Handle Return from BottomSheet – Safe Args
61 Bottom Sheet – Recap

Handle Internet Connection
62 Introducing with StateFlow
63 Create NetworkListener class
64 RecipesFragment – Listen for Internet Connection
65 Back Online – Persist data with DataStore

Search Recipes
66 Design RecipesFragment Menu
67 FoodRecipesApi – searchRecipes()
68 RemoteDataSource – searchRecipes()
69 MainViewModel – Handle Search Response
70 RecipesFragment – searchApiData()

DetailsActivity & OverviewFragment
71 Design activity details Layout
72 Send Result to DetailsActivity – Safe Args
73 Create PagerAdapter class
74 Design fragment overview Layout
75 OverviewFragment – Display Recipe Data
76 Parse HTML Text – Jsoup

IngredientsFragment
77 Design fragment ingredients Layout
78 Design ingredients row layout
79 Modify RecipesDiffUtil class
80 Create IngredientsAdapter class
81 IngredientsFragment – Display Ingredients Data

InstructionsFragment
82 Modify InstructionsFragment
83 Modify OverviewFragment & recipes row layout

ROOM Database – Favorite Recipes
84 Create FavoritesEntity class
85 Modify RecipesTypeConverter class
86 Modify RecipesDao interface
87 Modify LocalDataSource class
88 Modify MainViewModel class
89 Modify RecipesDatabase class

Add to Favorites – Details Activity
90 Create details menu
91 Save Recipe to Favorites
92 Check if Recipe is Saved
93 Remove Recipe from Favorites

FavoriteRecipesFragment
94 Design fragment favorite recipes Layout
95 Design favorite recipes row layout
96 Create FavoriteRecipesAdapter class
97 Display Favorite Recipes
98 Create FavoriteRecipesBinding class

Contextual Action Mode
99 FavoriteRecipesFragment – Single Click Listener
100 FavoriteRecipesFragment – Long Click Listener
101 Apply Contextual Action Mode Style
102 Recipe Selection Style – onLongClick
103 Apply Contextual Action Mode Title
104 Delete Selected Favorite Recipes
105 Close Contextual Action Mode
106 FavoriteRecipesFragment – ParseHTML
107 Recap – Contextual Action Mode
108 Create favorite recipes menu

FoodJokeFragment
109 Design fragment food joke
110 Create FoodJoke model class
111 Create FoodJoke GET Request
112 Modify RemoteDataSource – FoodJoke
113 Modify MainViewModel – FoodJoke
114 Offline Cache – FoodJoke
115 FoodJokeFragment – Let’s Start
116 FoodJokeBinding class – Part 1
117 FoodJokeBinding class – Part 2
118 Add Share Menu
119 Recap – FoodJokeFragment

Splash Screen
120 Add Splash Screen

Dark Theme
121 RecipesFragment – Dark Theme
122 FavoriteRecipesFragment – Dark Theme
123 FoodJokeFragment – Dark Theme
124 RecipesBottomSheet – Dark Theme
125 Placeholder Row Layout – Dark Theme
126 DetailsActivity – Dark Theme
127 OverviewFragment – Dark Theme
128 IngredientsFragment – Dark Theme

Motion Layout
129 Add Motion Layout – OverviewFragment

App Icon
130 Add App Icon

Final Word
131 Final Word

Course Updates – Bug Hunt & Code Cleanup
132 DataStore 1.0.0-alpha04 – Package Issue Fixed
133 Internet Connection Bug – Fixed
134 Migrate from ‘kotlin-android-extensions’ plugin