We may earn an affiliate commission when you visit our partners.
Course image
Clement Ochieng

You might have noticed that there are quite so many courses, tutorials and articles online teaching Firebase. However the problem with these is that most of the time they are incomplete and don't teach you how to use Firebase using modern design patterns. Most of these courses and documentation only teach you simple techniques making it difficult to integrate their code into your own projects. We've taken alot of time calibrating our code so that it is easily extensible and pluggable into all types of projects. Luckily for us, Google had introduced Android Jetpack a few years ago, thus we are able to utilize Clean Architecture in our projects.

Read more

You might have noticed that there are quite so many courses, tutorials and articles online teaching Firebase. However the problem with these is that most of the time they are incomplete and don't teach you how to use Firebase using modern design patterns. Most of these courses and documentation only teach you simple techniques making it difficult to integrate their code into your own projects. We've taken alot of time calibrating our code so that it is easily extensible and pluggable into all types of projects. Luckily for us, Google had introduced Android Jetpack a few years ago, thus we are able to utilize Clean Architecture in our projects.

Our projects try as much as possible to be generic and easily customizable. Using MVVM allows us to achieve this. We will be releasing new projects into this course every month, so buying it early allows you to save money and keep getting new projects that respect the latest techniques.

Why CRUD Apps?

Well all types of applications' main role is to manipulate data. And that data manipulation is what is called CRUD(Creating Reading Updating Deleting). If you master these three then you can create any type of application imaginable. These make up the core of any app. And doing it using Clean Architecture ensures you will have a solid code base you can use to easily start any type of app and have something working within a few minutes. That's why we have dedicated this course to creating CRUD apps with search and pagination and storing data offline as well. You can take advantage of that of using what we provide you here as a template to start any type of project.

What is this Course about?

Well in short: Firebase Realtime Database and how to Create several full CRUD applications and apply several caching techniques.

In Long:

We will be creating full applications making use:

  1. Firebase Realtime Database as our data store.

  2. You will learn  how to insert select update delete search and paginate/page firebase realtime database data.

  3. You will learn how implement an efficient offline fast approach in development. This means the app will have offline capability even if users completely have no internet connectivity. Through this approach users are still be able to browse data, search data. However to modify  we need internet connectivity since our main data store is Firebase Realtime database not SQLite.

  4. You will learn how to apply several aggresive caching techniques like custom permannet Hard Disk caching, caching in SQLite using Room and memory caching.

  5. How to use MVVM - Model View ViewModel to write easy to understand and testable app. You will be surprised how easy our code is to enhance or maintain.

  6. Use several Android Jetpack components like LiveData, ViewModel, Room etc.

Brief History of Firebase

Since the rise of the world wide web in the 1990s, there was only one main way of storing data in the cloud, that was through HTTP web services. You had to write server side code and host in a webserver, then write your web app and talk through HTTP methods. This was still the main way of doing things even with the rise of mobile development in the 2000s. However cloud technologies quickly started to arise like parse and Firebase. Firebase is a mobile and web application development platform developed by Firebase, Inc. in 2011, then acquired by Google in 2014. It is now the main cloud storage technology for mobile development. Firebase Realtime Database is one of the suite of products included in Firebase. It has the following advantages:

  1. It's realtime and allows our data to be synced across a multitude of devices.

  2. It's easy to use  and integrate into our projects.

  3. It's cross platform.

  4. It is well maintained by Google engineers. There is also reasonable stability despite the updates.

  5. It has an honest free package.

Enroll now

What's inside

Learning objectives

  • How to create several full offline first apps ready for play store using firebase realtime database
  • Firebase cloud storage - upload/download/update/delete images
  • Android jetpack components like room,livedata and viewmodel usage with firebase
  • Android mvvm(model view viewmodel) and clean architecture in a real world project backed by firebase
  • Insert select update delete search pagination in firebase realtime database
  • How to upload and download images to and from firebase cloud storage
  • Custom permanent hard disk lru data caching of firebase realtime database data
  • Firebase + sqlite local database using room data access layer

Syllabus

I show you previews of the apps created so far.

This is the demo of one of the apps we are creating. Download the app and test it on your device.

Read more

This is a quick demo of the application we are creating in the first section. You can use it as a template to create your app. This is easy as the code we are writing is high quality and takes advantage of Clean Architecture. Also be sure to download the APK to see what we are creating.

Am grateful for you buying my course. I have created bonus projects designed to teach you some concepts not covered in this course but which are essential. This app teaches you:

  1. Full Android app development using Kotlin

  2. Clean Architecture

  3. Room

  4. LiveData

  5. Fully offline app(local app)

Am trying to say thank for purchasing my course by creating this project for you. This project is meant to teach you:

  1. Room Data Access Layer - Full CRUD

  2. Model View ViewModel

  3. LiveData

  4. How to import data from csv to room

  5. CarouselView

  6. Page creation and designs

It is basically a template. Be creative and turn it into your own idea app.

Here I provide you with the demo of what we are creating. And by the way you can download the app below. Note that you can request more features to be every app. We will be releasing updates for every app.

In this lesson we are creating our android studio project. We are going to use androidx artifacts and create our project from the 'Empty Activity' template provided by Android Studio.

In this lesson we examine our gradle scripts. We are interested in two files specifically:

  1. build.gradle - Project Level

  2. build.gradle - App Level

We examine their roles with regards to our project.

In this lesson we just want to add custom fonts to our assets folder. We show where to create an assets folder then how to add any font right there. You can search for any font you like online and download then add it. Later on we will see how to load it programmatically using Calligraphy.

MAIN ROLES

  1. Addition of Custom Fonts to our Assets folder.

In this class we:

  1. Add/Define XML animations in an anim folder under our resources.

  2. These animations will either be applied to our widgets in the splas screen or in our activities when transitioning from one activity to the other.

In this section we look at:

  1. Drawables - Images we use throughout project.

  2. Menus - Toolbar menus we will be inflating in our activities.

  3. Colors - Basically colors we will be using throughout our project.

  4. Strings - Strings we use in our project like app_name.

  5. Styles - Themes for our activities.

We look at each of them in this section.

This is our Second model class.

MAIN ROLES

  1. Represent a network request/firebase operation. That operation will have properties like state,message and an optional list of downloaded data.

This is our Application class. android.app.Application, take note, is one of android's main components.

MAIN ROLES:

  1. Initialize our LRU Hard Disk Cache library.

  2. Initialize Calligraphy our font loading library.

This is our Application Constants Class.

MAIN ROLES:

  1. Define and hold for us all our application constants.

  2. We will also hold Firebase Database reference here.

In this lesson we look at our CacheManager class.  NB/= Normally Firebase provides default caching mechanism where data is cached for the application lifetime but needs to be reloaded everytime the app is restarted. We want to override this functionality with our caching mechanism where data is cached permanently on the device. Even if the app is restarted we will still have our data without connecting to Firebase. In other words we are creating an OFFLINE - FIRST APP.

MAIN ROLES

  1. Cache our Firebase data in the hard disk permanently asynchronously

  2. Retrieve data From our Cache asynchronously.

In this class we look at our Utils class. That is our Utility class

WHY THIS CLASS?

Normally when creating an application you always need some functionalities in more than one class. Wouldn't it be great if we could define these in a separate class, possibly as static properties then re-use them? Well it's what we do here.

MAIN FUNCTIONALITIES

  1. Define method to show us Toast message.

  2. Validate edittexts.

  3. Open an activity.

  4. Show material info-dialog.

  5. Select a date and render it into an edittext.

  6. Convert a string into a java.util.Date object.

  7. Send and receive a serialized object across activities.

This is our repository class. Remember we are using the Model View ViewModel design pattern. This class will be categorized under our model though it isn't strictly a model or data object class. It is here where we will be writing our CRUD operations logic. That is the code that allows us to post/insert, edit/update, read/select as well as delete data to and from Firebase Realtime Database. This will be a fairly long class.

Our methods will be returning MutableLiveData objects. These LiveData objects will be observed by subscribers thus notifying those subscribers of updates in the data.

YOU CAN RE-USE THE METHODS HERE in any app if you just want a pluggable class to perform CRUD operations including search and filter.

MAIN ROLES

  1. Post Data to Firebase realtime database.

  2. Update existing data in Firebase.

  3. Read and return data in Firebase realtime database.

  4. Delete data from  firebase.

  5. Search existing data in Firebase.

This is our FragmentsAdapter class. This class will allow us easily create swipeable tabs whenever we want.

MAIN ROLES

  1. Maintain for us an array to hold fragments through which users will be able to swipe with the help of the ViewPager class.

  2. Return the Fragment title as a CharSequence.

  3. Receive a param of Fragments for which tabs will be created.

  4. Connect our tabs with our fragments as well as viewpager.

This is our base activity class. We want to take advantage of inheritance, one of Object oriented programming pillars so we create a class that will contain functionalities/methods that are common or usable to different activities. Then those methods can simply be inherited by child activities.

MAIN DEFINITIONS

  1. Method for Showing a toast message.

  2. Method for creating a single-choice material dialog that can be used to select an item from an array then render the returned item in an edittext.

  3. method for creating and showing a progress card. That can show us the progress of a firebase operation, its completion as well as failure. It will be capable of showing a title, message and progress dialog.

This method has the same functionality for the BaseActivity had only that it is used for Fragments as opposed to activities. It basically defines functionalities that are common across several fragments.

This is our splash activity, an optional part of any application. You can use a splash screen to portray your brand.

WHAT THIS ACTIVITY DOES

  1. Show logo, title and subtitle when application starts.

  2. Load animations and apply them to those widgets.

  3. Delay/Suspend a thread for a fraction of a second before opening dashboard activity.

APIS/CLASSES USED

  1. TextViews - To show title and subtitle.

  2. ImageView - To show company logo.

  3. AnimationUtils class - To load our animations from an XML resource.

  4. Animation class - To hold the loaded animation so that it can be applied to our widgets.

  5. Thread - To be delayed for a fraction of a second.

WHAT YOU WILL LEARN FROM THIS LESSON

  1. How to load animations from an XML resource into an Animation object, then apply that animation to any android view.

  2. How to delay a thread before opening a new activity.

We start in this class by creating an android studio project. We will use Empty Activity as our template and our source language will be Java.

In this class we will add transition animations in our anim folder under the resources. These animations will be applied in our activities as we transition from one activity to another.

Traffic lights

Read about what's good
what should give you pause
and possible dealbreakers
Employs Android Jetpack components like LiveData, ViewModel, and Room, which are recommended by Google for modern Android development
Focuses on Firebase Realtime Database, a NoSQL cloud database, which allows learners to build cross-platform mobile applications with ease
Teaches Model-View-ViewModel (MVVM) architecture, which is a popular design pattern for structuring Android applications for testability and maintainability
Explores offline-first development, which is a strategy that prioritizes the availability of data and functionality even when the device is not connected to the internet
Covers CRUD operations (Create, Read, Update, Delete) with search and pagination, which are fundamental data manipulation techniques for app development
Utilizes custom permanent hard disk LRU data caching, which is a technique for improving app performance by storing frequently accessed data locally

Save this course

Create your own learning path. Save this course to your list so you can find it easily later.
Save

Reviews summary

Android firebase mvvm jetpack crud

Review data was not provided for this course. The analysis below is based solely on the course description, objectives, and syllabus, and does not reflect student feedback.
Hands-on learning by creating several full example applications.
"We will be creating full applications making use... [of Firebase, caching, MVVM, Jetpack]."
"We will be releasing new projects into this course every month."
"Create several full offline first apps ready for play store using Firebase Realtime Database."
Code is designed to be extensible and pluggable.
"We've taken alot of time calibrating our code so that it is easily extensible and pluggable into all types of projects."
"Using what we provide you here as a template to start any type of project."
"You can use it as a template to create your app. This is easy as the code we are writing is high quality and takes advantage of Clean Architecture."
Incorporates relevant Jetpack libraries like Room, LiveData, and ViewModel.
"Use several Android Jetpack components like LiveData, ViewModel, Room etc."
"Utilize clean architecture and MVVM. Room, LiveData and ViewModel usage with Firebase."
"Room Data Access Layer - Full CRUD... Model View ViewModel... LiveData."
Utilizes modern Android architecture patterns.
"Utilize Clean Architecture in our projects."
"Using MVVM allows us to achieve this [generic and customizable projects]."
"Use MVVM - Model View ViewModel to write easy to understand and testable app. You will be surprised how easy our code is to enhance or maintain."
Teaches building apps with permanent local data caching.
"You will learn how implement an efficient offline fast approach in development. This means the app will have offline capability even if users completely have no internet."
"Apply several aggresive caching techniques like custom permannet Hard Disk caching, caching in SQLite using Room and memory caching."
"Our caching mechanism where data is cached permanently on the device. Even if the app is restarted we will still have our data without connecting to Firebase."
Covers comprehensive CRUD operations with Firebase Realtime Database.
"Firebase Realtime Database as our data store. How to insert select update delete search and paginate/page firebase realtime database data."
"We will be creating several full CRUD applications and apply several caching techniques... using Firebase Realtime Database."
"It is here where we will be writing our CRUD operations logic...post/insert, edit/update, read/select as well as delete data to and from Firebase Realtime Database."

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 Android Firebase MVVM Jetpack - Many Offline-First CRUD Apps with these activities:
Review Android Jetpack Components
Solidify your understanding of Android Jetpack components like LiveData, ViewModel, and Room, which are heavily used in the course.
Show steps
  • Read the official Android documentation.
  • Work through a simple Jetpack tutorial.
  • Study example code snippets.
Review 'Clean Architecture: A Craftsman's Guide to Software Structure and Design'
Understand the principles of Clean Architecture in depth.
View Clean Architecture on Amazon
Show steps
  • Read the book and take notes.
  • Relate the concepts to the course material.
  • Apply Clean Architecture principles to your projects.
Review 'Firebase in Action'
Gain a deeper understanding of Firebase concepts and best practices.
View Alter Ego: A Novel on Amazon
Show steps
  • Read the chapters relevant to the course.
  • Experiment with the code examples.
  • Take notes on key concepts.
Four other activities
Expand to see all activities and additional details
Show all seven activities
Implement Data Caching Techniques
Practice implementing different data caching techniques, such as memory caching, disk caching, and SQLite caching, to improve app performance.
Show steps
  • Study different caching strategies.
  • Implement each caching technique in a sample project.
  • Measure the performance improvements.
Build a Simple CRUD App with Firebase
Apply the concepts learned in the course by building a simple CRUD application using Firebase Realtime Database and Android Jetpack components.
Show steps
  • Design the data model for your app.
  • Implement the CRUD operations using Firebase.
  • Integrate Android Jetpack components for UI and data management.
  • Test your application thoroughly.
Write a Blog Post on Offline-First Architecture
Reinforce your understanding of offline-first architecture by writing a blog post explaining the concepts and benefits.
Show steps
  • Research offline-first architecture principles.
  • Outline the key topics for your blog post.
  • Write the blog post with clear explanations and examples.
  • Publish your blog post online.
Contribute to a Firebase Android Library
Deepen your understanding of Firebase and Android development by contributing to an open-source Firebase Android library.
Show steps
  • Find a Firebase Android library on GitHub.
  • Identify a bug or feature to work on.
  • Submit a pull request with your changes.

Career center

Learners who complete Android Firebase MVVM Jetpack - Many Offline-First CRUD Apps will develop knowledge and skills that may be useful to these careers:
Android Developer
As an Android Developer, you will design, develop, and maintain applications for the Android platform. This course helps by providing practical experience in building full Create Read Update Delete applications using Firebase Realtime Database. The course's focus on Model View ViewModel architecture ensures that the Android Developer understands how to write maintainable, testable code. By learning how to implement efficient offline capabilities and aggressive caching techniques, the Android Developer can improve app performance and user experience. The Android Developer can also take advantage of the knowledge of Android Jetpack components like LiveData and Room.
Mobile Application Developer
Mobile Application Developers create applications for smartphones and tablets, often working with cross-platform frameworks or native technologies. This course, which emphasizes building mobile applications using Firebase and Android Jetpack, helps the Mobile Application Developer gain expertise in backend integration and data management. The course covers essential techniques such as inserting, selecting, updating, deleting, searching, and paginating data in Firebase Realtime Database. Mastering these skills enables the Mobile Application Developer to efficiently handle data manipulation, which is central to most mobile applications. Furthermore, the course teaches offline-first development approaches.
Firebase Developer
A Firebase Developer specializes in leveraging Google's Firebase platform to build web and mobile applications. The Firebase Developer uses the knowledge gained in this course. The course focuses specifically on Firebase Realtime Database and its integration with modern Android development practices. The Firebase Developer benefits from learning how to create full Create Read Update Delete applications, implement caching techniques, and use Model View ViewModel architecture. The course provides the Firebase Developer with a solid foundation for building scalable and efficient applications using Firebase.
Backend Developer
Backend Developers are responsible for server-side logic and database management, which makes this course's coverage of Firebase Realtime Database particularly useful. The course’s deep dive into Create Read Update Delete operations, search, pagination, and offline data storage provides Backend Developers with skills applicable to a wide range of projects. Backend Developers can directly apply the techniques learned in this course to optimize data handling and improve application responsiveness. A Backend Developer who wishes to work with mobile applications may find this course useful.
Software Engineer
Software Engineers require a broad understanding of software development principles and practices. This course provides Software Engineers with valuable hands-on experience in building applications with robust architectures and modern technologies. The course covers key concepts such as Model View ViewModel, Clean Architecture, and the use of Android Jetpack components. Emphasizing Create Read Update Delete operations and efficient data handling techniques, the Software Engineer can build scalable and maintainable applications. The Software Engineer learns how to implement offline capabilities and caching strategies.
Application Architect
Application Architects design the structure and components of software applications, often needing to make decisions about technology stacks and design patterns. This course provides insight into building applications using Firebase, Android Jetpack, and Model View ViewModel architecture. The Application Architect benefits from the course's emphasis on Clean Architecture, which promotes maintainability and testability. Understanding how to implement Create Read Update Delete operations and caching techniques enables the Application Architect to design efficient and scalable applications. Typically, an Application Architect role requires a master's degree.
Full-Stack Developer
Full Stack Developers work on both front-end and back-end aspects of application development. This course helps the Full Stack Developer by enhancing their expertise in mobile app development and back-end integration with Firebase. The course's focus on building Create Read Update Delete applications, implementing offline capabilities, and using Android Jetpack components ensures well-rounded skills. With hands-on experience in data manipulation and architectural patterns, the Full Stack Developer can contribute to projects involving both client-side and server-side development. This course may be useful.
Mobile UI Developer
Mobile User Interface Developers focus on the design and implementation of user interfaces for mobile applications. While this course primarily focuses on back-end integration and data management, it may be useful for a Mobile UI Developer. The course’s use of Model View ViewModel architecture helps create a clear separation of concerns, making it easier to integrate user interface components with back-end data. Knowledge of Android Jetpack components like LiveData and ViewModel can help the Mobile UI Developer build responsive and data-driven user interfaces. This course may be useful.
Database Administrator
Database Administrators oversee the management and maintenance of databases, ensuring data integrity and availability. This course helps the Database Administrator by providing insight into Firebase Realtime Database, a NoSQL cloud database. While Database Administrators typically work with traditional relational databases, understanding NoSQL solutions like Firebase can broaden their skill set. The course covers essential Create Read Update Delete operations alongside data caching techniques. This allows the Database Administrators to understand how data is stored, retrieved, and managed in a Firebase environment. This course may be useful.
Technical Lead
Technical Leads guide development teams and make decisions about technology and architecture. This course provides the Technical Lead with practical knowledge of building applications using Firebase, Android Jetpack, and Model View ViewModel architecture. The course’s emphasis on Clean Architecture and best practices in data management allows the Technical Lead to make informed decisions about project structure and technology choices. The Technical Lead can leverage the course to guide their teams in building scalable, maintainable, and efficient applications. Often, the position of Technical Lead requires a master's degree.
Data Engineer
Data Engineers are responsible for designing, building, and maintaining data pipelines and infrastructure. While this course focuses on application development with Firebase, it may still be helpful to the Data Engineer. The course's coverage of Firebase Realtime Database and data caching techniques provides insights into how data is handled in a mobile application context. A Data Engineer may find the course relevant for understanding how to integrate mobile applications with data storage and retrieval systems. Additionally, the course may be helpful in understanding data flows.
Solution Architect
Solution Architects design and implement comprehensive technology solutions, often involving multiple systems and platforms. While this course focuses specifically on Android and Firebase, it can offer valuable insights to a Solution Architect. An understanding of mobile application development, backend integration, and data management is helpful for designing end-to-end solutions. The course can provide the Solution Architect with a deeper understanding of how mobile applications interact with cloud databases. The Solution Architect is typically required to hold an advanced degree.
Quality Assurance Engineer
Quality Assurance Engineers are responsible for testing software and ensuring it meets quality standards. This course may be useful to Quality Assurance Engineers by providing a deeper understanding of the application's architecture and data flow. The course’s emphasis on Model View ViewModel and Clean Architecture means the Quality Assurance Engineer can better understand the structure of the application. Understanding Create Read Update Delete operations and caching techniques can improve the Quality Assurance Engineer's testing strategies. This course may be useful.
Business Analyst
Business Analysts analyze business needs and translate them into technical requirements. While this course is targeted towards developers, it can provide the Business Analyst with a better understanding of the technical aspects of mobile application development. Familiarity with Firebase Realtime Database, Android Jetpack, and Model View ViewModel architecture can help the Business Analyst communicate more effectively with development teams. The Business Analyst can leverage this knowledge to better define requirements and assess feasibility. This course may be useful.
Project Manager
Project Managers oversee software development projects, ensuring they are completed on time and within budget. While this course is technical, it can provide Project Managers with a better understanding of the technologies and methodologies used in mobile app development. Familiarity with Firebase, Android Jetpack, and Model View ViewModel architecture can help Project Managers communicate more effectively with development teams. The Project Manager can apply this knowledge to better plan and track project progress. This course may be useful.

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 Android Firebase MVVM Jetpack - Many Offline-First CRUD Apps.
Explains the principles of clean architecture, which key concept in the course. It provides guidance on how to design software systems that are maintainable, testable, and scalable. It's a valuable resource for developers who want to improve their software design skills and build robust applications.
Provides a comprehensive guide to using Firebase, covering topics such as Realtime Database, Cloud Storage, and Authentication. It is particularly useful for understanding the underlying concepts and best practices for integrating Firebase into Android applications. While the course focuses on practical implementation, this book offers a deeper dive into the Firebase ecosystem. It serves as a valuable reference for developers looking to expand their knowledge beyond the course material.

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