Giter VIP home page Giter VIP logo

melihaksoy / android-kotlin-modulerized-cleanarchitecture Goto Github PK

View Code? Open in Web Editor NEW
358.0 4.0 37.0 572 KB

๐Ÿš€ Example modularized android application with single activity written in Kotlin

License: Apache License 2.0

Kotlin 92.01% Ruby 7.99%
kotlin android modularization dagger2 clean-architecture fastlane circleci navigation-architecture-component moshi room-persistence-library

android-kotlin-modulerized-cleanarchitecture's Introduction

Android-Kotlin-Modulerized-CleanArchitecture

Actions CircleCI codebeat badge codecov Awesome Kotlin Badge

This is a prototype application tries to serve an example for modularization & clean architecture in Android.

While there are many blogs about good practices, it's hard to come by a complete example that merges these different popular topics & approaches.

This project takes popular approaches and libraries to create an example on how to actually bind these components with each other.

I'll soon be writing small series about roadmap, challanges, alternatives and try - fails I've encountered during development in Medium.

Stack

  • MVVM
  • Databinding
  • Dagger 2
  • Retrofit
  • Moshi
  • Navigation library
  • Coroutines
  • Room
  • Paging
  • Detekt
  • Clean Architecture
  • Modularization
  • JUnit5
  • Mockk
  • Kluent
  • JaCoCo
  • CircleCI
  • Fastlane

Modularization Graph

modularization graph

Dependency graph

dependency hierarchy

LICENSE

Copyright 2019 Melih Aksoy

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.

android-kotlin-modulerized-cleanarchitecture's People

Contributors

melihaksoy avatar victorvicari avatar

Stargazers

 avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar

Watchers

 avatar  avatar  avatar  avatar

android-kotlin-modulerized-cleanarchitecture's Issues

Add paging

Right now repository only fetches 10 responses statically defined. Introduce paging with paging library.

Replace navigation

Current state has multiple activities. Goal is to introduce single activity approach with deeplink navigation.

Separate `repository` from `core`

Right now core uses api to provide repository as usable to other modules that include it. repository should be included exclusively instead.

Modulerize repository

Right now repository is a single module using persistence and network. Network and persistence can be separate modules.

Making calls async

Right now fetching rockets are sequential:

Fetch -> Save -> Return

This should be async. It's good to take al ook at Room's LiveData support. flow can be replaced with liveData builder in BaseInteractor in this case.

Polish UI

Create example use cases with using new material library components

Update versions

Update library versions. Room's new Flow support might be option to replace suspension.

Applying styles and themes

Use material library to apply styles and themes, make use of attributes that platform uses for better effect.

Applying dependency inversion

Some modules depend on concrete classes that are in other modules. This can be a good case to apply dependency inversion.

Recommend Projects

  • React photo React

    A declarative, efficient, and flexible JavaScript library for building user interfaces.

  • Vue.js photo Vue.js

    ๐Ÿ–– Vue.js is a progressive, incrementally-adoptable JavaScript framework for building UI on the web.

  • Typescript photo Typescript

    TypeScript is a superset of JavaScript that compiles to clean JavaScript output.

  • TensorFlow photo TensorFlow

    An Open Source Machine Learning Framework for Everyone

  • Django photo Django

    The Web framework for perfectionists with deadlines.

  • D3 photo D3

    Bring data to life with SVG, Canvas and HTML. ๐Ÿ“Š๐Ÿ“ˆ๐ŸŽ‰

Recommend Topics

  • javascript

    JavaScript (JS) is a lightweight interpreted programming language with first-class functions.

  • web

    Some thing interesting about web. New door for the world.

  • server

    A server is a program made to process requests and deliver data to clients.

  • Machine learning

    Machine learning is a way of modeling and interpreting data that allows a piece of software to respond intelligently.

  • Game

    Some thing interesting about game, make everyone happy.

Recommend Org

  • Facebook photo Facebook

    We are working to build community through open source technology. NB: members must have two-factor auth.

  • Microsoft photo Microsoft

    Open source projects and samples from Microsoft.

  • Google photo Google

    Google โค๏ธ Open Source for everyone.

  • D3 photo D3

    Data-Driven Documents codes.