{"id":28958,"url":"https://github.com/onmyway133/awesome-android-architecture","name":"awesome-android-architecture","description":"🏰 Better ways to structure Android apps","projects_count":52,"last_synced_at":"2026-10-15T06:00:37.147Z","repository":{"id":63235072,"uuid":"95539651","full_name":"onmyway133/awesome-android-architecture","owner":"onmyway133","description":"🏰 Better ways to structure Android apps","archived":false,"fork":false,"pushed_at":"2020-04-01T11:02:26.000Z","size":34,"stargazers_count":55,"open_issues_count":0,"forks_count":5,"subscribers_count":2,"default_branch":"master","last_synced_at":"2026-09-25T18:38:11.917Z","etag":null,"topics":["android","architecture"],"latest_commit_sha":null,"homepage":"https://onmyway133.github.io/","language":null,"has_issues":true,"has_wiki":null,"has_pages":null,"mirror_url":null,"source_name":null,"license":"mit","status":null,"scm":"git","pull_requests_enabled":true,"icon_url":"https://github.com/onmyway133.png","metadata":{"files":{"readme":"README.md","changelog":null,"contributing":null,"funding":null,"license":"LICENSE","code_of_conduct":null,"threat_model":null,"audit":null,"citation":null,"codeowners":null,"security":null,"support":null}},"created_at":"2017-06-27T09:09:31.000Z","updated_at":"2025-04-09T19:33:13.000Z","dependencies_parsed_at":"2022-11-15T12:05:51.827Z","dependency_job_id":null,"html_url":"https://github.com/onmyway133/awesome-android-architecture","commit_stats":null,"previous_names":[],"tags_count":0,"template":false,"template_full_name":null,"purl":"pkg:github/onmyway133/awesome-android-architecture","repository_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/onmyway133%2Fawesome-android-architecture","tags_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/onmyway133%2Fawesome-android-architecture/tags","releases_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/onmyway133%2Fawesome-android-architecture/releases","manifests_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/onmyway133%2Fawesome-android-architecture/manifests","owner_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/owners/onmyway133","download_url":"https://codeload.github.com/onmyway133/awesome-android-architecture/tar.gz/refs/heads/master","sbom_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/onmyway133%2Fawesome-android-architecture/sbom","scorecard":null,"host":{"name":"GitHub","url":"https://github.com","kind":"github","repositories_count":344836268,"owners_count":38329741,"icon_url":"https://github.com/github.png","version":null,"created_at":"2022-05-30T11:31:42.601Z","updated_at":"2026-10-03T21:59:58.778Z","status":"online","status_checked_at":"2026-10-15T02:00:06.843Z","response_time":105,"last_error":null,"robots_txt_status":"success","robots_txt_updated_at":"2025-07-24T06:49:26.215Z","robots_txt_url":"https://github.com/robots.txt","online":true,"can_crawl_api":true,"host_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub","repositories_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories","repository_names_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repository_names","owners_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/owners"}},"created_at":"2024-01-13T12:57:50.609Z","updated_at":"2026-10-15T06:00:37.148Z","primary_language":null,"list_of_lists":false,"displayable":true,"categories":["Table of content","Uncategorized"],"sub_categories":["Posts","Uncategorized","Reactive Programming","Dependency Injection","Testing","Repos","Adapter"],"readme":"# awesome android architecture [![Awesome](https://cdn.rawgit.com/sindresorhus/awesome/d7305f38d29fed78fa85652e3a63e154dd8e8829/media/badge.svg)](https://github.com/sindresorhus/awesome)\n\n❤️ Support my app ❤️ \n\n- [Push Hero - pure Swift native macOS application to test push notifications](https://www.producthunt.com/posts/push-hero-2)\n- [PastePal - Pasteboard, note and shortcut manager](https://www.producthunt.com/posts/pastepal)\n- [Frame recorder - Recorder gif and video with frame](https://www.producthunt.com/posts/frame-recorder)\n- [Other apps](https://onmyway133.github.io/projects/)\n\n❤️❤️😇😍🤘❤️❤️\n\n## Table of content\n\n- [Architecture Component](#architecture-component)\n- [MVP](#mvp)\n- [MVC](#mvc)\n- [MVI](#mvi)\n- [MVVM](#mvvm)\n- [Clean Architecture](#clean-architecture)\n- [Misc](#misc)\n\n# Architecture Component\n\n### Posts\n\n- [Android Architecture Components](https://developer.android.com/topic/libraries/architecture/index.html)\n- [Architecture Components - Introduction (Google I/O '17)](https://www.youtube.com/watch?v=FrteWKKVyzI)\n- [Guide to App Architecture](https://developer.android.com/topic/libraries/architecture/guide.html) 🚀\n- [Android lifecycle-aware components codelab](https://codelabs.developers.google.com/codelabs/android-lifecycles)\n- [Exploring the new Android Architecture Components library](https://medium.com/exploring-android/exploring-the-new-android-architecture-components-c33b15d89c23)\n- [droidcon NYC 2017 - ViewModels, LiveData and Lifecycles, oh my!](https://www.youtube.com/watch?v=SlZVYkhoSq8)\n- [Android Architecture Components Considered Harmful](https://academy.realm.io/posts/android-architecture-components-considered-harmful-mobilization/)\n- [ViewModels: Persistence, onSaveInstanceState(), Restoring UI State and Loaders](https://medium.com/google-developers/viewmodels-persistence-onsaveinstancestate-restoring-ui-state-and-loaders-fc7cc4a6c090)\n- [ViewModels and LiveData: Patterns + AntiPatterns](https://medium.com/google-developers/viewmodels-and-livedata-patterns-antipatterns-21efaef74a54)\n- [Google releases source for Google I/O 2018 for Android](https://android-developers.googleblog.com/2018/08/google-releases-source-for-google-io.html)\n- [5 common mistakes when using Architecture Components](https://proandroiddev.com/5-common-mistakes-when-using-architecture-components-403e9899f4cb)\n\n### Repos\n\n- [android-architecture-counter-sample](https://github.com/dlew/android-architecture-counter-sample) Sample app using Android architecture components\n- [android-architecture-components](https://github.com/googlesamples/android-architecture-components) Samples for Android Architecture Components\n\n# MVP\nModel View Presenter\n\n### Posts\n\n- [Model-View-Presenter: Android guidelines](https://medium.com/@cervonefrancesco/model-view-presenter-android-guidelines-94970b430ddf)\n- [Android MVP — Doing it right](https://android.jlelse.eu/android-mvp-doing-it-right-dac9d5d72079)\n- [droidcon NYC 2017 - Clean app design with Architecture Components](https://www.youtube.com/watch?v=i1-7S-RxfvQ) :rocket:\n- [Android Architecture Patterns Part 2: Model-View-Presenter](https://medium.com/upday-devs/android-architecture-patterns-part-2-model-view-presenter-8a6faaae14a5)\n- [Essential Guide For Designing Your Android App Architecture: MVP: Part 1](https://blog.mindorks.com/essential-guide-for-designing-your-android-app-architecture-mvp-part-1-74efaf1cda40)\n\n### Repos\n\n- [android-architecture-components](https://github.com/googlesamples/android-architecture-components) Samples for Android Architecture Components. \n- [mortar](https://github.com/square/mortar) A simple library that makes it easy to pair thin views with dedicated controllers, isolated from most of the vagaries of the Activity life cycle.\n- [nucleus](https://github.com/konmik/nucleus) Nucleus is an Android library, which utilizes the Model-View-Presenter pattern to properly connect background tasks with visual parts of an application.\n\n# MVC\nModel View Controller\n\n### Posts\n\n- [Android Architecture Patterns Part 1: Model-View-Controller](https://medium.com/upday-devs/android-architecture-patterns-part-1-model-view-controller-3baecef5f2b6)\n\n# MVI\nModel View Intent\n\n### Posts\n\n- [android-architecture](https://github.com/oldergod/android-architecture) MVI architecture Implementation of the ToDo app.\n- [droidcon NYC 2017 - Model-View-Intent for Android](https://www.youtube.com/watch?v=PXBXcHQeDLE)\n- [The Contract of the Model-View-Intent Architecture](https://proandroiddev.com/the-contract-of-the-model-view-intent-architecture-777f95706c1e)\n\n# MVVM\nModel View ViewModel\n\n### Posts\n\n- [ANDROID DATABINDING: GOODBYE PRESENTER, HELLO VIEWMODEL!](http://tech.vg.no/2015/07/17/android-databinding-goodbye-presenter-hello-viewmodel/)\n- [Android Architecture Patterns Part 3:\nModel-View-ViewModel](https://medium.com/upday-devs/android-architecture-patterns-part-3-model-view-viewmodel-e7eeee76b73b)\n- [Android Architecture Components MVVM — Part 1](https://proandroiddev.com/android-architecture-components-mvvm-part-1-1bd138959535)\n\n### Repos\n\n- [AndroidViewModel](https://github.com/inloop/AndroidViewModel) Separating data and state handling from Fragments or Activities without lots of boilerplate-code.\n- [android-oss](https://github.com/kickstarter/android-oss) Kickstarter for Android\n\n# Clean Architecture\n\n### Posts\n\n- [A detailed guide on developing Android apps using the Clean Architecture pattern](https://medium.com/@dmilicic/a-detailed-guide-on-developing-android-apps-using-the-clean-architecture-pattern-d38d71e94029)\n\n### Repos\n\n- [CleanArchitecture](https://github.com/android10/Android-CleanArchitecture)\n- [android-clean-architecture-boilerplate](https://github.com/bufferapp/android-clean-architecture-boilerplate)\n\n# Misc\n\n### Posts\n\n- [Android Architecture: Part 1 – every new beginning is hard](http://five.agency/android-architecture-part-1-every-new-beginning-is-hard/)\n- [Model View Intent on Android](http://hannesdorfmann.com/android/model-view-intent)\n- [Communication between Fragment and Activity](https://github.com/onmyway133/blog/issues/108)\n- [Keddit — Intro: Learn Kotlin while developing an Android App](https://android.jlelse.eu/learn-kotlin-while-developing-an-android-app-introduction-567e21ff9664) :rocket: :rocket:\n- [MVC vs MVP vs MVVM vs MVI](https://academy.realm.io/posts/mvc-vs-mvp-vs-mvvm-vs-mvi-mobilization-moskala)\n- [A Functional Approach to Android Architecture using Kotlin](https://academy.realm.io/posts/mobilization-2017-jorge-castillo-functional-android-architecture-kotlin/)\n\n### Reactive Programming\n\n- [Grokking RxJava, Part 1: The Basics](http://blog.danlew.net/2014/09/15/grokking-rxjava-part-1/)\n- [Crunching RxAndroid — Intro](https://medium.com/crunching-rxandroid/crunching-rxandroid-intro-c27eb6f009ea)\n- [RxAndroid and Kotlin (Part 1)](https://medium.freecodecamp.org/rxandroid-and-kotlin-part-1-f0382dc26ed8)\n- [Retrofiting on Android with Kotlin](https://segunfamisa.com/posts/using-retrofit-on-android-with-kotlin)\n- [Using Kotlin, RxJava 2 and Retrofit to consume REST API on Android](https://softwaremill.com/kotlin-rxjava2-retrofit-android/)\n\n### Adapter\n\n- [Great Adapter hell escape](http://hannesdorfmann.com/android/adapter-delegates)\n\n### Dependency Injection\n\n- [kapsule](https://github.com/traversals/kapsule) Minimalist dependency injection library for Kotlin.\n- [Kodein](https://github.com/SalomonBrys/Kodein) Painless Kotlin Dependency Injection \n- [Dependency injection in Android](https://developer.android.com/training/dependency-injection)\n\n### Testing\n\n- [Testing robots](https://academy.realm.io/posts/kau-jake-wharton-testing-robots/)\n\n","projects_url":"https://awesome.ecosyste.ms/api/v1/lists/onmyway133%2Fawesome-android-architecture/projects"}