All Projects → sansets → android-clean-architecture

sansets / android-clean-architecture

Licence: Apache-2.0 license
Sample for Android Clean Architecture.

Programming Languages

kotlin
9241 projects

Projects that are alternatives of or similar to android-clean-architecture

Pinboard Kotlin
Unofficial Pinboard android app, developed as a playground to study many topics related to Android. Kotlin + Coroutines + MVVM
Stars: ✭ 60 (-50%)
Mutual labels:  room, clean-architecture, dagger2
Simple-Note-App-with-Online-Storage
✍️ Simple Note Making App use Sqllite Room 🧰 for caching the notes and 📥 Firebase Database for online storage
Stars: ✭ 42 (-65%)
Mutual labels:  room, dagger2, navigation-component
MVI-Clean-Architecture
MVI + Clean Architecture + Best Practices | Example of Clean Architecture of Android app using MVI design pattern with Jetpack and popular libraries
Stars: ✭ 50 (-58.33%)
Mutual labels:  room, clean-architecture, navigation-component
Android tmdb clean architecture
Showcase of clean architecture concepts along with Continuous Integration and Development for modular Android applications. Includes test suits (functional and unit tests) along with code coverage.
Stars: ✭ 63 (-47.5%)
Mutual labels:  room, clean-architecture, dagger2
CleanArchitectureMVVM
Example of Clean Architecture of Android app using MVVM, Koin, Coroutines, Retrofit, Room, Solid Principle, DRY, KISS, OOP
Stars: ✭ 60 (-50%)
Mutual labels:  room, clean-architecture, modular-architecture
Newsster
Android App using Paging3, Hilt, Coroutines, Flow, Jetpack, MVVM architecture.
Stars: ✭ 147 (+22.5%)
Mutual labels:  room, navigation-component, coroutines-flow
Android Clean Architecture Mvvm Dagger Rx
Implemented by Clean Architecture, Dagger2, MVVM, LiveData, RX, Retrofit2, Room, Anko
Stars: ✭ 138 (+15%)
Mutual labels:  room, clean-architecture, dagger2
MoviesApp
A Movie Application uses TheMovie API, MVVM architecture and all jetpack components.
Stars: ✭ 100 (-16.67%)
Mutual labels:  room, dagger2, coroutines-flow
Rick-and-Morty
The Rick And Morty - MVVM with a clean architecture approach using some of the best practices in Android Development.
Stars: ✭ 45 (-62.5%)
Mutual labels:  room, navigation-component, coroutines-flow
movies
An example approach for modularization, reactive clean architecture and persistancy.
Stars: ✭ 110 (-8.33%)
Mutual labels:  room, clean-architecture, dagger2
Githubprojectbrowser
This is a sample Android Project that is based on Clean Architecture
Stars: ✭ 64 (-46.67%)
Mutual labels:  room, clean-architecture, dagger2
Weatherapp
5 Day Forecast app that works on Android and uses latest tools (Kotlin, Navigation, Room, LiveData, Databinding, Dagger 2)
Stars: ✭ 426 (+255%)
Mutual labels:  room, clean-architecture, dagger2
Muvi
Very simple project to show a collection of Movie from MovieDb with a minimalist design
Stars: ✭ 46 (-61.67%)
Mutual labels:  room, clean-architecture, dagger2
Simple-Notes-Kotlin-App
✍️ Simple Note Making App use mvvm architecture , dagger , coroutines and navigation component. Features includes 🗒️ create , edit and ❌ delete notes
Stars: ✭ 40 (-66.67%)
Mutual labels:  room, dagger2, navigation-component
iiCnma
A playground android app, showcasing the latest technologies and architectures using the Movie Database APIs.
Stars: ✭ 42 (-65%)
Mutual labels:  clean-architecture, navigation-component, coroutines-flow
flickr-android
A small sample app to showcase architecting app using Clean Architecture and MVVM
Stars: ✭ 25 (-79.17%)
Mutual labels:  room, clean-architecture, dagger2
News Sample App
A sample news app which demonstrates clean architecture and best practices for developing android app
Stars: ✭ 334 (+178.33%)
Mutual labels:  room, clean-architecture, dagger2
Android Architecture Components Kotlin
Clean code App with Kotlin and Android Architecture Components
Stars: ✭ 23 (-80.83%)
Mutual labels:  room, clean-architecture, dagger2
Clean Architecture Components Boilerplate
A fork of our clean architecture boilerplate, this time using the Android Architecture Components
Stars: ✭ 1,241 (+934.17%)
Mutual labels:  room, clean-architecture
Kotlin Mvvm Architecture
Android Architecture Design Patterns using Kotlin, MVVM, Dagger2, LiveData, Room, MediatorLiveData, NetworkBoundResources, Retrofit, AndroidX, ViewModels, Dependency Injection using Dagger2, Repository pattern.
Stars: ✭ 126 (+5%)
Mutual labels:  room, dagger2

android-clean-architecture

This is a sample project that presents a modern, 2020 approach to Android application development with up to date tech-stack.

The goal of the project is to demonstrate best practices by using up to date tech-stack and presenting modern Android application Architecture that is modular, scalable, maintainable, and testable. This application may look quite simple, but it has all of these small details that will set the rock-solid foundation for the larger app suitable for bigger teams and long application lifecycle.

Screenshots

Home Favorite Food Recipe List Filter

Environment Setup

First off, you require the latest Android Studio 4.0.1 (or newer) to be able to build the app.

You need to supply API key for food recipe content displayed in the app. That is currently spoonacular API. You can find information about how to gain access via this link https://spoonacular.com/food-api.

When you obtain the key, you can provide them to the app by putting the following in the local.properties project root file:

#spoonacular API KEYS
spoonacular.key = "<insert>"

Architecture

The architecture of the application is based, apply and strictly complies with each of the following 5 points:

Tech-stack

Min API level is set to 21, so the presented approach is suitable for over 94% of devices running Android. This project takes advantage of many popular libraries and tools of the Android ecosystem. Most of the libraries are in the stable version unless there is a good reason to use non-stable dependency.

  • Jetpack:
    • Android KTX - provide concise, idiomatic Kotlin to Jetpack and Android platform APIs.
    • AndroidX - major improvement to the original Android Support Library, which is no longer maintained.
    • View Binding - allows you to more easily write code that interacts with views/
    • Lifecycle - perform actions in response to a change in the lifecycle status of another component, such as activities and fragments.
    • LiveData - lifecycle-aware, meaning it respects the lifecycle of other app components, such as activities, fragments, or services.
    • Navigation - helps you implement navigation, from simple button clicks to more complex patterns, such as app bars and the navigation drawer.
    • Room - persistence library provides an abstraction layer over SQLite to allow for more robust database access while harnessing the full power of SQLite.
    • ViewModel - designed to store and manage UI-related data in a lifecycle conscious way. The ViewModel class allows data to survive configuration changes such as screen rotations.
  • Coroutines - managing background threads with simplified code and reducing needs for callbacks.
  • Coroutines Flow - cold asynchronous data stream that sequentially emits values and completes normally or with an exception
  • Dagger2 - dependency injector for replacement all Factory classes.
  • Retrofit - type-safe HTTP client.
  • Glide - image loading and caching library

Authors

Sandi Setiawan

Linkedin Medium

License

Copyright 2020 Sandi Setiawan

Licensed under the Apache License, Version 2.0 (the "License");
you may not use this file except in compliance with the License.
You may obtain a copy of the License at

	http://www.apache.org/licenses/LICENSE-2.0

Unless required by applicable law or agreed to in writing, software
distributed under the License is distributed on an "AS IS" BASIS,
WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
See the License for the specific language governing permissions and
limitations under the License.
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].