Make the jump from "Hello World" projects and learn how to implement app architecture and offline-caching into your Android apps


What you will learn in this course:

• Understand and apply MVVM architecture and best practices like separation of concerns, dependency injection, and the single source of truth principle

•  Fetch data from a REST API and cache the results offline to provide a great user experience when internet access is limited

•  Build a fully functional app with pagination, progress indicators, and error messages

•  Gracefully handle edge cases like process death to make your apps robust for real-world usage

•  Understand and use modern Kotlin language features like Coroutines, Flows, and Channels

•  and much more

You can use the knowledge shared in this course to build your portfolio for future employers, start working as a freelancer, or make your own apps 

Libraries and patterns we will use:

•  Model-View-ViewModel (MVVM) architecture with Jetpack ViewModels and the repository pattern

•  Retrofit & Room for network requests and offline caching

•  Pagination with Paging 3 and RemoteMediator

•  Dagger Hilt for dependency injection

•  Kotlin Coroutines, Flows, and Channels for asynchronous operations

•  View Binding, Glide, and more


This course follows Google's official guide to app architecture. But while the guide only contains the theory, this course will show you how to actually implement it.

What we will build:


Course Curriculum

📼 7 hours of high-quality video content
+ 📂 Project files for each lesson
+ 🏆 Certificate of completion

Introduction & Setup

1 - What We Will Build  (9:35)
2 - Project Setup  (7:08)


3 - Fragments & Navigation  (45:29)
4 - Network and Database Classes  (38:04)
5 - Dependency Injection with Dagger Hilt  (21:06)

Breaking News Feature

6 - Fetching Data From the Network  (33:24)
7 - Offline Caching with NetworkBoundResource  (41:38)
8 - Sending Events with Channels  (34:17)
9 - Refresh Logic  (12:23)

Bookmarks Feature

10 - Bookmarks & Click Handling  (29:39)

Search Feature

11 - Search Database & Adapter Classes  (24:32)
12 - RemoteMediator  (34:53)
13 - LoadState Flow  (31:32)
14 - Scrolling Up + Error Snackbar  (37:51)

Process Death

15 - Why and How to Handle Process Death  (18:34)

Get your certificate!

After finishing the final course quiz you will receive your very own certificate of completion with your name on it and a unique ID that verifies its validity.

Who is this course for?

This is the right course for you if you've built some simple beginner-level Android projects but don't quite know how to make the jump to a real app with architecture and offline caching. Experience with any of the libraries used in this course is not necessary (but helpful).

But this course will also be very useful for experienced developers who want to get up to date on the latest libraries or fill in some knowledge gaps. You can take a look at the project source code on Github.

But this is not a course for absolute beginners!

I won't explain the absolute basics of Android or Kotlin, so you already need a beginner-level understanding of these things. For example, you should know what a fragment is or how you can run your app on an emulator. You also need to know the basics of the Kotlin programming language (I will explain the more advanced language features).

Why this course is better than other courses

Most other courses...

❌ ...are poorly researched, rushed, and often show bad practices
✔️ This project was created by not one, but 2 Android developers to make sure the code is well written and follows best practices

❌ ...often copy-paste large blocks of code without explaining them
✔️ I will explain every line of code we write in this course. There will be no copy-pasting unless we have already written the same code before

...implement features half-heartedly and without really understanding the APIs behind them
✔️ I spent days talking to the developers of the Google libraries directly to make sure we are using the APIs as intended and work around existing problems

❌ ...use confusing technical terms and slang without explaining what they actually mean
✔️ I will explain every concept and technical term in plain English so that even beginners can understand them

...ignore important edge cases like process death, configuration changes, or memory leaks
✔️ This course will show you how to build a robust app, without leaving out any important concepts.

This course is well structured, thoroughly planned, and everything builds up in a logical way.

I've prepared illustrations that will help you better understand difficult concepts and I will also give you the source code for each video.


Save weeks of your time by not having to search for all the information in many different sources

Instead of spending weeks of your time reading documentation and trying to find answers on Stackoverflow (which sometimes don't even exist yet), this course will teach you everything you need to know in a concise and structured manner.

We did the tedious work so you can learn at maximum efficiency.

Who created this course

My name is Florian Walther and I am the instructor of this course. I am a self-taught programmer with over 3 years of experience in Android development. Over 180,000 subscribers on my Youtube channel Coding in Flow love my clear and concise programming tutorials.
To make sure this course is rock solid, I got help from Gabor Varadi, also known as "Zhuinden" or "EpicPandaForce" on Stackoverflow.

Gabor has a CS degree and over 6 years of experience in Android development. In the Android community, he is well-known for his helpfulness and detailed explanations of difficult concepts.

What others say about my content


Discuss with other developers


Buying this course will also get you access to an exclusive channel on our Coding in Flow Discord server where you can discuss this course with other developers and ask questions. I will also be there to answer questions regularly.

Time to invest in your future!

14 Day Money-Back Guarantee

I'm sure you will enjoy this course. But if you don't like it for any reason, I'll refund you up to 14 days after your purchase. No questions asked.

Frequently Asked Questions

Q: Will we build a big app with many features like user authentication and detail screens in this course?

A: No. The app we are building in this course is relatively simple and doesn't have many features because I wanted to focus on one specific topic and that is caching. I think this will teach better than a bloated course where nothing is really explained properly. You can see the app we are building in the Github repo or in the introductory video above.

Q: Does this course include (unit) testing?

A: No. Testing by itself is a huge topic and out of scope of this course. In order to cover this topic properly and without rushing it, I have to create a separate course for it in the future.

Q: Courses on Udemy are much cheaper, why should I buy this course instead?

A: I've seen a lot of other courses and tutorials over the years and I know for a fact that the vast majority of them are just poorly prepared and important points are often swept under the rug, especially when they are not obvious. My courses are more expensive because they are high-quality. I take my time to research topics thoroughly to avoid showing wrong practices. That's why 2 developers prepared this course and not just one.

Q: Now that Jetpack Compose is out, isn't this course outdated?

A: Jetpack Compose is still in its infancy and adopting it in the industry will take years. Most companies don't rewrite their apps just because there is a new shiny technology available. If you want to become job-ready, this is what you need to learn. Also, a lot of the concepts you learn here are framework-independent and will help you in your developer career no matter what platform you code for.

Q: Do I get lifetime access to the videos?

A: Yes, you can watch these videos whenever you want.