Loqui is a project that presents modern, 2019 approach to Android application development using Kotlin and latest tech-stack.
The goal of the project is to demonstrate best practices and present modern Android application architecture that is modular, scalable, maintainable and testable. The goal is to design it in a manner, that will set the rock-solid foundation of the larger app suitable for bigger teams and long application lifecycle. Many of the project design decisions follow official Google recommendations.
This project brings to table set of best practices, tools, and solutions:
- 100% Kotlin
- Modern architecture (Clean Architecture, Model-View-ViewModel)
- Android Jetpack
- A single-activity architecture, using the Navigation component to manage fragment operations
- Reactive UIs
- Firebase
- CI pipeline (TODO)
- Testing (TODO)
- Dependency Injection
- Material design
Min API level is set to 21
, so the presented approach is suitable for over
85% of devices running Android. This project takes advantage of many
popular libraries and tools of the Android ecosystem.
- Tech-stack
- Kotlin + Coroutines - perform background operations
- Dagger2 - dependency injection
- Jetpack
- Navigation - deal with whole in-app navigation
- LiveData - notify views about database change
- Lifecycle - perform action when lifecycle state changes
- ViewModel - store and manage UI-related data in a lifecycle conscious way
- Firebase - Authentication, storing data and files
- Glide - image loading library
- and more...
- Architecture
- Clean Architecture (at module level)
- MVVM (presentation layer)
- Android Architecture components (ViewModel, LiveData, Navigation, SafeArgs plugin)
- Tests
- Unit Tests (JUnit) (TODO)
- Mockito + Mockito-Kotlin (TODO)
- Gradle
TODO
- Implementing randomizing users
- Add test coverage
- Improve error handling
- UI tests
- Improve databinding with two-way data binding using InverseAdapters
- Add Room (?)
- Support for DayNight MaterialTheme
- and much more…
There are a few ways to open this project.
- Android Studio -> File -> New -> From Version control -> Git
- Enter
https://github.com/andrzejbogacz/LoquiCleanArchitecture.git
into URL field
- Run
git clone https://github.com/andrzejbogacz/LoquiCleanArchitecture.git
- Android Studio -> File -> Open
- Android Architecture Blueprints v2 - showcase of different Android architecture approaches
- Android sunflower complete
Jetpack
sample covering all libraries - GithubBrowserSample - multiple small projects demonstrating usage of Android Architecture Components
- Android - Clean Architecture - Kotlin - movies sample app in Kotlin with usage of coroutines as a background threading of UseCases