We may earn an affiliate commission when you visit our partners.
Stefan Jovanovic

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.

Read more

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 locally 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.

However this course is not for Absolute Beginners in Android Development, at least you need to have a basic knowledge about most popular Android Architecture components, and Kotlin programming language in general. This is not going to be easy task especially if you haven't worked before simultaneously with API and local database. Still don't get discouraged everything is learnable here, if you are motivated enough of course.

One more thing, so this course will be an ongoing project which means that I will post updates on a regular basis, whenever we find a new bug, or whenever some code cleanup is required. Which is why I want to involve all of you who watch this course to work together with me in making this  app even better. I'm going to give me you more details about that at the end of this course of course.

So what are you waiting for, let's get started developers.

Source code: Visit my Github profile (stevdza-san)

Enroll now

What's inside

Learning objectives

  • 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
  • Viewpager2
  • Create contextual action mode
  • Share data with other apps
  • Create modal bottom sheet
  • Nice looking ui design
  • Migration from kotlin-android-extensions plugin
  • And more...
  • Show more
  • Show less

Syllabus

Introduction

Source Code (Github): https://github.com/stevdza-san/Foody

Application Design
Application Preview
Read more
Project Structure Overview

API Endpoint example: https://api.spoonacular.com/recipes/complexSearch?number=50&apiKey=[YOUR-API-KEY]&type=snack&diet=vegan&addRecipeInformation=true&fillIngredients=true

Github Repository
Navigation Component Setup
Project Setup
Design RecipesFragment Layout
Design RecipesRowLayout
Design Recyclerview Placeholder Layout
Start with Retrofit
Introducing with Retrofit
Generate Model classes for API
Create Constants class
Create RecipesApi interface
Project Structure Overview & RemoteDataSource class
Introducing with Dependency Injection
Dependency Injection Overview
Manual Dependency Injection
Dagger Basics
Hilt - Dependency Injection Library | Part 1
Hilt - Dependency Injection Library | Part 2
Component Scoping
Dagger-Hilt Setup - NetworkModule
Create MyApplication class

ApplicationComponent::class is now deprecated. We now use SingletonComponent::class instead.
I have posted an updated video about that at lecture number 143.

Inject RemoteDataSource class
Create and Inject Repository class
Create NetworkResult class

@ViewModelInject annotation is deprecated, I've made a video about it in the last section of this course.

Introducing with Data Binding
Binding Adapters
Display API Data in Recyclerview
Create RecipesAdapter class
DiffUtil - Create RecipesDiffUtil class
Create RecipesRowBinding class
RecipesFragment - Connect the Dots
Create RecipesViewModel class
Let's Recap
Introducing with ROOM Library
MainViewModel - Handle Search Response
ROOM Database
Offline Caching
Introducing with Kotlin Flow
Create Entity (RecipesEntity)
Create DAO (RecipesDao)
Create Type Converter (RecipesTypeConverter)
Create Database (RecipesDatabase)
Dagger-Hilt Setup - DatabaseModule
Create DatabaseModule
Create and Inject LocalDataSource
MainViewModel - Offline Cache
RecipesFragment - Read from Database
ObserveOnce - Extension Function
Database Inspector
Placeholder Image - Error
Create RecipesBinding class
Introducing with DataStore Preferences
Add Bottom Sheet
About BottomSheet
Design RecipesBottomSheet
Navigate to RecipesBottomSheet
Customize Chip Style
Create and Inject DataStoreRepository class
Modify and Inject RecipesViewModel

I've made an update video in the last section of this course, because setOnCheckedChangeListener is deprecated now.

Handle Return from BottomSheet - Safe Args
Bottom Sheet - Recap
Handle Internet Connection
Introducing with StateFlow
Create NetworkListener class
RecipesFragment - Listen for Internet Connection
Back Online - Persist data with DataStore
Search Recipes
Design RecipesFragment Menu
FoodRecipesApi - searchRecipes()
RemoteDataSource - searchRecipes()
RecipesFragment - searchApiData()
DetailsActivity & OverviewFragment
Design activity_details Layout
Send Result to DetailsActivity - Safe Args
Create PagerAdapter class
Design fragment_overview Layout
OverviewFragment - Display Recipe Data
Parse HTML Text - Jsoup
IngredientsFragment
Design fragment_ingredients Layout
Design ingredients_row_layout
Modify RecipesDiffUtil class
Create IngredientsAdapter class
IngredientsFragment - Display Ingredients Data
InstructionsFragment

Good to know

Know what's good
, what to watch for
, and possible dealbreakers
Teaches how to build a complete Android application, which is a great way to showcase skills to potential employers
Uses Kotlin and modern Android Architecture components, which are standard for contemporary Android development
Covers both local and remote data sources, which is essential for building robust and versatile Android applications
Employs Dagger-Hilt for dependency injection, which promotes cleaner code and easier testing
Requires familiarity with Android Architecture Components and Kotlin, so beginners may find the course challenging
Uses Spoonacular API, so learners will need to obtain their own API key to fully participate in the course

Save this course

Save Modern Food Recipes App - Android Development with Kotlin to your list so you can find it easily later:
Save

Activities

Be better prepared before your course. Deepen your understanding during and after it. Supplement your coursework and achieve mastery of the topics covered in Modern Food Recipes App - Android Development with Kotlin with these activities:
Review Kotlin Coroutines
Review Kotlin Coroutines to better understand asynchronous operations and improve app responsiveness.
Browse courses on Kotlin Coroutines
Show steps
  • Read the official Kotlin Coroutines documentation.
  • Work through a tutorial on using coroutines for network requests.
  • Practice converting synchronous code to use coroutines.
Brush up on REST APIs
Review REST API concepts to better understand how the app interacts with the Spoonacular API.
Browse courses on REST API
Show steps
  • Review the basics of HTTP methods (GET, POST, PUT, DELETE).
  • Study API documentation and examples.
  • Practice making API requests using tools like Postman or Insomnia.
Read 'Head First Android Development'
Read 'Head First Android Development' to reinforce core Android concepts and best practices.
Show steps
  • Read the chapters related to UI design and data persistence.
  • Complete the exercises and projects in the book.
Four other activities
Expand to see all activities and additional details
Show all seven activities
Implement a basic recipe search feature
Implement a simplified recipe search feature to practice API integration and data handling.
Show steps
  • Create a new branch in your project for this feature.
  • Implement a basic UI for entering search queries.
  • Integrate with the Spoonacular API to fetch search results.
  • Display the search results in a RecyclerView.
Write a blog post about Dagger-Hilt
Write a blog post explaining Dagger-Hilt to solidify your understanding of dependency injection.
Show steps
  • Research Dagger-Hilt and its benefits.
  • Outline the key concepts and features of Dagger-Hilt.
  • Write a clear and concise explanation of how to use Dagger-Hilt in an Android project.
  • Include code examples to illustrate the concepts.
Contribute to an open-source Android project
Contribute to an open-source Android project to gain experience working with a real-world codebase.
Show steps
  • Find an open-source Android project on GitHub.
  • Identify a bug or feature that you can contribute to.
  • Fork the repository and create a new branch for your changes.
  • Implement the fix or feature and submit a pull request.
Read 'Android Architecture Components'
Read 'Android Architecture Components' to deepen your understanding of recommended architectural patterns.
Show steps
  • Read the chapters related to ViewModel, LiveData, and Room.
  • Experiment with implementing these components in your own projects.

Career center

Learners who complete Modern Food Recipes App - Android Development with Kotlin will develop knowledge and skills that may be useful to these careers:
Android Developer
An Android Developer creates applications for devices using the Android operating system. This course, which focuses on building a food recipes application, provides hands-on experience with key Android development components. It covers essential areas such as ROOM database, Retrofit for API communication, and dependency injection with Dagger Hilt. In addition, the course explores offline caching, local and remote data sources, and client-server communication, all of which are directly applicable to building robust Android apps. A learner will gain practical skills in Kotlin, architecture components, navigation, and UI design, which are essential for an Android developer.
Mobile Application Developer
A Mobile Application Developer is responsible for creating, testing, and deploying applications on mobile devices. This course provides great practical experience for a mobile application developer as it guides the learner through the complete development process of a food recipes application using Kotlin. It is comprehensive in that it covers all aspects from API integration using Retrofit to local data storage with ROOM. The course teaches important technologies such as dependency injection with Dagger Hilt, offline caching and data persistence. The course's emphasis on both local and remote data sources and its use of modern Android architecture components make it an invaluable learning experience for a career as a mobile application developer.
Software Engineer
A Software Engineer designs, develops, and maintains software systems. This can include applications, databases, and web services. This course provides practical exposure to many important facets of software engineering, particularly within the Android ecosystem. A software engineer will find value in learning how to structure a project, use databases with ROOM, handle API requests with Retrofit, and manage dependencies with Dagger Hilt. The course also teaches essential software development best practices, such as offline caching and data management. This course, focused on creating a full-featured application, provides a solid learning experience for a software engineer.
Application Programmer
An Application Programmer writes, tests, and debugs software applications. For those building Android applications, this course is quite helpful. An application programmer will learn to build a complete application based on a real world use case with this course's recipes app. The course covers important topics such as data handling with ROOM and RESTful API connections. The course also focuses on managing data within an application and working with client server communication. This provides a range of skills that are essential to an application programmer. The course provides a thorough learning experience to help a learner become a proficient application programmer.
Kotlin Developer
A Kotlin Developer specializes in programming with the Kotlin language, often for Android development. This course demonstrates many advanced features of the Kotlin programming language, including Kotlin Coroutines and Flow. A Kotlin developer will learn how to use Kotlin to build a complete Android application. Additionally, the course incorporates modern Android architecture components and dependency injection with Dagger Hilt, which are essential for effective Kotlin development. A Kotlin developer will gain expertise in practical application development, API integration, and local data storage. The course is directly relevant and beneficial for someone looking for the experience of building a full application using Kotlin.
Backend Developer
A Backend Developer focuses on the server side of applications, managing databases, APIs, and server logic. Although this course focuses on Android, the experience that a backend developer gains working with RESTful APIs and dealing with client requests is beneficial. A backend developer would gain direct experience with the request response cycle, as well as how to structure data from an API, which is helpful for understanding the needs of the backend system. The course covers important topics such as sending HTTP requests, parsing HTTP responses, and handling data persistence, all of which are valuable skills for a backend developer. While the focus here is not on code deployed directly to the server, a backend developer will find that this course helps build critical skills.
UI Designer
A UI Designer focuses on creating visually appealing and user-friendly interfaces. This course provides exposure to several relevant UI design concepts within the context of Android development. While not focused solely on UI, a UI designer will gain exposure in using Material Design, creating shimmer effects, as well as designing layouts. The course also allows one to work with various UI elements including RecyclerViews, ViewPagers, and context menus. This course may be useful to a UI designer who wants to better understand the technical constraints and opportunities when designing for Android.
Database Administrator
A Database Administrator is responsible for managing and maintaining databases. While this course does not focus on creating and managing a high-volume production database, a database administrator may find use in the hands-on experience using ROOM database. The course also covers dealing with local database storage, as well as caching, which are database concepts that a database administrator might find interesting. This course may be useful to a database administrator who wants to better understand the data needs of an application.
API Developer
An API Developer creates and maintains Application Programming Interfaces (APIs) that allow different software systems to communicate. While this course focuses on the consumption of APIs, an API developer may find this practical experience helpful. An API developer will gain insight into the client-server communication cycle and how the client application interacts with the API. This course provides a practical view into how various HTTP requests are constructed and the data is parsed from the response. This course may be useful to an API developer who wants to better understand the needs of client applications.
Mobile Product Manager
A Mobile Product Manager is responsible for the strategy, roadmap, and execution of mobile applications. They need an understanding of mobile technologies. This course could be beneficial to a mobile product manager, as the manager gains technical experience and the ability to make decisions from a technical perspective. This course allows a product manager to fully grasp the application design and development cycle, as well as the technical decisions that go into building an application. The detailed work with APIs, client server communication, and data management is valuable to a mobile product manager.
Technical Writer
A Technical Writer creates documentation for software and hardware products. While not directly related to technical writing, this course may be useful for a technical writer in the mobile space to provide hands-on context for the technologies they write about. A technical writer may find value in understanding how a mobile application is built and the various components involved, such as REST APIs, client server communication, and local data persistence. This course may be useful to a technical writer who wants to build a stronger understanding of the mobile space.
Project Manager
A Project Manager oversees software development projects, coordinating teams and timelines. This course provides exposure to the full process of creating an Android application, which may be useful to a project manager to understand the steps involved in the development cycle. A project manager will gain a greater understanding of aspects of software development, including database implementation, API integration, and client server communication. This course may help a project manager better estimate timelines and make decisions.
Quality Assurance Engineer
A Quality Assurance Engineer is responsible for testing software and ensuring its quality. This course provides an understanding of the design and development process of a mobile application. A quality assurance engineer will find value in understanding the key technologies and techniques used, such as API integrations, local caching, and working with databases. This course may be useful to someone in quality assurance who wants to gain a stronger understanding of mobile application development.
Data Analyst
A Data Analyst interprets data and provides insights to help inform business decisions. This course provides practical experience working with API responses, data persistence, and local storage. While not directly related, this experience may provide context for a data analyst. A data analyst might find it helpful to understand how data is managed and retrieved from APIs and local databases on mobile devices. This course may be useful to a data analyst to provide context to data management.
UX Researcher
A UX Researcher studies user behavior to inform design decisions. This course provides background and context to the process of developing a mobile application; however, it does not directly relate to user experience research. This course may be useful to a UX researcher who wants a basic understanding of how a mobile application interacts with local and remote data sources, as well as how APIs are used in mobile application development. A UX researcher might find an improved understanding of a mobile application developer's perspective.

Reading list

We've selected two books that we think will supplement your learning. Use these to develop background knowledge, enrich your coursework, and gain a deeper understanding of the topics covered in Modern Food Recipes App - Android Development with Kotlin.
Dives deep into the Android Architecture Components, including ViewModel, LiveData, and Room. It's beneficial for understanding how to structure Android apps for testability and maintainability. The book provides practical examples and best practices for using these components effectively. It valuable resource for building robust and scalable Android applications.
Provides a comprehensive introduction to Android development, covering fundamental concepts and practical examples. It's particularly helpful for those with some programming experience but are new to Android. The book uses a visual and engaging style to explain complex topics, making it easier to grasp the core concepts. It serves as a good reference for understanding the basics of Android app development.

Share

Help others find this course page by sharing it with your friends and followers:

Similar courses

Similar courses are unavailable at this time. Please try again later.
Our mission

OpenCourser helps millions of learners each year. People visit us to learn workspace skills, ace their exams, and nurture their curiosity.

Our extensive catalog contains over 50,000 courses and twice as many books. Browse by search, by topic, or even by career interests. We'll match you to the right resources quickly.

Find this site helpful? Tell a friend about us.

Affiliate disclosure

We're supported by our community of learners. When you purchase or subscribe to courses and programs or purchase books, we may earn a commission from our partners.

Your purchases help us maintain our catalog and keep our servers humming without ads.

Thank you for supporting OpenCourser.

© 2016 - 2025 OpenCourser