All Projects → nglauber → Books_jetpack

nglauber / Books_jetpack

A sample application to demonstrate how to use Jetpack Architecture Components in an Android Application following the Clean Architecture concepts.

Programming Languages

kotlin
9241 projects
flow
126 projects

Projects that are alternatives of or similar to Books jetpack

Wanandroid
Jetpack MVVM For Wanandroid 最佳实践 !
Stars: ✭ 1,004 (+316.6%)
Mutual labels:  coroutines, mvvm, viewmodel, databinding
Kotlinjetpackinaction
🔥🔥 Kotlin Jetpack zero to hero. 新手到高手
Stars: ✭ 264 (+9.54%)
Mutual labels:  coroutines, mvvm, viewmodel, databinding
Movieapp Clean Architecture
Learning Project (Movie App) For Applying Android Architecture Components And Clean Architecture Using MVVM With Kotlin
Stars: ✭ 123 (-48.96%)
Mutual labels:  coroutines, mvvm, viewmodel, databinding
Moko Mvvm
Model-View-ViewModel architecture components for mobile (android & ios) Kotlin Multiplatform development
Stars: ✭ 329 (+36.51%)
Mutual labels:  coroutines, mvvm, viewmodel, databinding
modern-android
Modern Android Project Skeleton
Stars: ✭ 17 (-92.95%)
Mutual labels:  coroutines, mvvm, viewmodel, databinding
Coolweather
Weather App that uses Android best practices. Android Jetpack, clean architecture. Written in Kotlin
Stars: ✭ 154 (-36.1%)
Mutual labels:  coroutines, mvvm, viewmodel, databinding
Android App Architecture Mvvm Databinding
A simple but complete project (in both Java & Kotlin) to demonstrate the Android application architecture with MVVM pattern, a client app for The Movie DB Web API. Dagger2 is used for dependency injection and RxJava is used for RFP (Reactive Functional Programming).
Stars: ✭ 69 (-71.37%)
Mutual labels:  mvvm, databinding, room-persistence-library
Movietray
Its a playground application focusing on Paging3, MVVM architecture, Kotlin Extension functions, Retrofit, DSL, Navigation component, MotionLayout, SharedElementTransition, Single Activity Architecture, DataStore etc.
Stars: ✭ 78 (-67.63%)
Mutual labels:  coroutines, mvvm, room-persistence-library
Harrypotter
🧙🏻 Sample HarryPotter application based on MVVM architecture (ViewModel, LiveData, Repository, Coroutines, Koin or Dagger-Hilt)
Stars: ✭ 116 (-51.87%)
Mutual labels:  coroutines, mvvm, databinding
Modular App Core
Core implementations for a modular Android App
Stars: ✭ 127 (-47.3%)
Mutual labels:  coroutines, mvvm, room-persistence-library
Androidroom
Android example to show how to use Room to access SQLite database on device for reading and writing data. This example also shows how to use LiveData and ViewModel with Room to build reactive, well performing and easy to maintain applications.
Stars: ✭ 36 (-85.06%)
Mutual labels:  sqlite, mvvm, viewmodel
Mentorship Android
Mentorship System is an application that matches women in tech to mentor each other, on career development, through 1:1 relations during a certain period of time. This is the Android application of this project.
Stars: ✭ 117 (-51.45%)
Mutual labels:  mvvm, viewmodel, databinding
Foodium
It simply loads Posts data from API and stores it in persistence storage (i.e. SQLite Database). Posts will be always loaded from local database. Remote data (from API) and Local data is always synchronized.
Stars: ✭ 1,940 (+704.98%)
Mutual labels:  coroutines, mvvm, room-persistence-library
Jetpackmvvm
🐔🏀一个Jetpack结合MVVM的快速开发框架,基于MVVM模式集成谷歌官方推荐的JetPack组件库:LiveData、ViewModel、Lifecycle、Navigation组件 使用Kotlin语言,添加大量拓展函数,简化代码 加入Retrofit网络请求,协程,帮你简化各种操作,让你快速开发项目
Stars: ✭ 1,100 (+356.43%)
Mutual labels:  mvvm, viewmodel, databinding
Awesome Android Kotlin Apps
👓 A curated list of awesome android kotlin apps by open-source contributors.
Stars: ✭ 1,058 (+339%)
Mutual labels:  coroutines, mvvm, viewmodel
Sample Code Movies
This repository contains sample code. Its purpose being, to quickly demonstrate Android and software development in general, clean code, best practices, testing and all those other must know goodies.
Stars: ✭ 81 (-66.39%)
Mutual labels:  coroutines, mvvm, viewmodel
Mvvmframe
🏰 MVVMFrame for Android 是一个基于Google官方推出的Architecture Components dependencies(现在叫JetPack){ Lifecycle,LiveData,ViewModel,Room } 构建的快速开发框架。有了MVVMFrame的加持,从此构建一个MVVM模式的项目变得快捷简单。
Stars: ✭ 218 (-9.54%)
Mutual labels:  mvvm, viewmodel, databinding
Android Vmlib
VMLib is an Android framework based on Android Jetpack, easy to use, desinged for fast development. Embrace the new way devloping Android :)
Stars: ✭ 146 (-39.42%)
Mutual labels:  mvvm, viewmodel, databinding
Ktarmor Mvvm
👻 Android快速开发框架, KtArmor 寓意着 为Android 赋予战斗装甲, 方便开发者快速进行Android 开发。
Stars: ✭ 148 (-38.59%)
Mutual labels:  coroutines, mvvm, viewmodel
Base Mvvm
App built to showcase basic Android View components like ViewPager, RecyclerView(homogeneous and heterogeneous items), NavigationDrawer, Animated Vector Drawables, Collapsing Toolbar Layout etc. housed in a MVVM architecture
Stars: ✭ 18 (-92.53%)
Mutual labels:  mvvm, viewmodel, room-persistence-library

Books Jetpack

This sample demonstrates how to use some of the Android Architecture Components available in Jetpack library.

In this sample I tried to follow the Clean Architecture principles and use some cool Android libraries.

The Application is divided in modules as displayed below:

  • UI - contains all UI related classes (Activities, Fragments, Adapters, etc.).
    The authentication process is also implemented here (I need to improve that) using Firebase Authentication.
    This layer is using Jetpack's Navigation API to implement the "single activity" approach for the navigation flow.
  • Presentation - once this project is folowing (or trying to) the MVVM pattern, this layer is using View Model library to keep data between config changes.
    To expose observable data from the View Models, this module is using LiveData.
    This layer is using Lifecycle library in order to tie the View Model with UI lifecycle (in some cases).
    Finally, this module is also using Data Binding to keep the data in sync during user input.
  • Domain - in this module are declared the application's use cases.
  • Data - declares the basic operations that must be provided by the application's repository and the basic data classes used as DTO.
  • Data Remote - contains a implementation of a remote data source using Firebase Cloud Firestore. The book's cover are stored in the Firebase Cloud Storage.
  • Data Local - contains a implementation of a local data source Room library. The book's cover are stored in the local file system.

The architecture flow is displayed below:


(Source: Lessons learnt using Coroutines Flow article by Manuel Vivo)

Screenshots

Books List

This screen displays all books saved on the repository (local or remote).

Book details

This screen display the details of a book selected in books list.

Book Form

In this screen, the user can add a new book or edit an existing one.

Login Screen

The user must perform the login with their Google account to access the application.

Libraries

This project is written in Kotlin and it's using the following libraries:

Get started

The project is compatible with Android Studio 3.5.2. To run this application, you must have to create a Firebase Project and enable Google Authentication. Afterwards, you must have to download the google_services.json file from the firebase console and add it app module root folder. If you want to save data on Firebase Cloud Firestore, enable this database for your project in Firebase Console. Also enable the Firebase Cloud Storage.

To choose the data source you will save application data, just make the following change in the BooksRepositoryImpl.kt file.

internal class BooksRepositoryImpl(
   // Change RoomLocalData to FBData interface
   private val localData: RoomLocalData,
   private val entityMapper: Mapper<BookData, Book>,
   private val dataMapper: Mapper<Book, BookData>
) : BooksRepository {

    ...
}

And that's it! You're good to go.

Contribute ;)

This project is just a demo, but any feedback and/or PR's are appreciated! :)

Note that the project description data, including the texts, logos, images, and/or trademarks, for each open source project belongs to its rightful owner. If you wish to add or remove any projects, please contact us at [email protected].