A starter for modular android project.
Going modular gives you lots of benefits such as :
- Faster build time
- Less coupling / dependencies
- Flexibility to adopt different architecture for different module
- On demand feature delivery using Dynamic Module
You can basically leave this one out. App Module is now as small as possible and only used as entry point.
This is your module for your data source. Connect to your API, manage cache, creating entities happened here.
Each feature must be contained in a separate gradle module.
This is used for routing purposes, especially between modules.
Contains reusable classes and resources that you can use in another modules. We have already added some useful common features that you will need to start your project.
- Setup your data source, and update relevant build / android_commons gradle file. Add relevant functionality in data modules (model, local, remote, repository)
- Add your relevant features. Create new module for each feature
- Add your relevant features koin module and add them in App application.
- Connect your features by updating navigation module nav graph
- Improve readme
- Screenshots
- Product flavors
- Write Unit test and Instrumental test
- Add recycler view example feature as Dynamic Module
- More utils
- Create project generator
- Define style standard
- Android Lollipop (API 19) or above
- Jetpack - Jetpack is a suite of libraries, tools, and guidance to help developers write high-quality apps easier.
- Retrofit - A type-safe HTTP client for Android and Java
- RxJava - a library for composing asynchronous and event-based programs by using observable sequences.
- Koin - A pragmatic lightweight dependency injection framework for Kotlin developers. Written in pure Kotlin
- OkHttp - HTTP is the way modern applications network. It’s how we exchange data & media. Doing HTTP efficiently makes your stuff load faster and saves bandwidth.
- Room - Persistence library provides an abstraction layer over SQLite to allow for more robust database access while harnessing the full power of SQLite.
- MockK - mocking library for Kotlin.
- MockWebServer - A scriptable web server for testing HTTP clients
- Espresso - Concise, beautiful, and reliable Android UI tests.