Welcome 👋 I hope this boilerplate is not only helpful to other developers, but also that it helps to educate in the area of architecture. I created this boilerplate for a few reasons:
- To experiment with modularisation
- To experiment with the Android Architecture Components
- To share some approaches to clean architecture, especially as we've been talking a lot about it
- To use as a starting point in future projects where clean architecture feels appropriate
Note: The use of clean architecture may seem over-complicated for this sample project. However, this allows us to keep the amount of boilerplate code to a minimum and also demonstrate the approach in a simpler form.
Clean Architecture will not be appropriate for every project, so it is down to you to decide whether or not it fits your needs.
- Android Architecture Components (Room, ViewModel, LiveData)
- Android Support Libraries
- RxJava2
- Dagger 2 (2.17)
- Glide
- Retrofit
- AutoDimension
The architecture of the project follows the principles of Clean Architecture. Here's how the sample project implements it:
Again to note, use Clean Architecture where appropriate. That decision is down to you and the project that you are working on.
A special thanks go to the authors involved with these repositories, they were a great resource during our learning!
-
https://8thlight.com/blog/uncle-bob/2012/08/13/the-clean-architecture.html
-
https://fernandocejas.com/2015/07/18/architecting-android-the-evolution/
-
https://fernandocejas.com/2014/09/03/architecting-android-the-clean-way/
-
https://overflow.buffer.com/2017/10/13/package-feature-modularised-android-projects/
-
https://proandroiddev.com/how-to-android-dagger-2-10-2-11-butterknife-mvp-part-1-eb0f6b970fd
-
https://github.com/bufferapp/clean-architecture-components-boilerplate