Pronote is a sample project that present a modern approach to Android application development with modern tech-stack.
The goal of the project is to demonstrate the Testing of these technologies by using the best practices for developing and presenting modern Android application Architecture that is modular, scalable, maintainable, and testable
- 100% Kotlin
- MVVM architecture
- Android Jetpack
- Reactive UI
- 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. Most of the libraries are in the stable version unless there is a good reason to use non-stable dependency.
-
Tech-stack
- Kotlin
- Dependency Injection
- Dagger Hilt - Standard library to incorporate Dagger dependency injection into an Android application
- Hilt ViewModel - DI for injecting ViewModel.
- RxJava-RxAndroid - deal with reactive use cases
- Retrofit - networking
- Android Jetpack
- Room - keep entire data inside the application
- Navigation - deal with whole in-app navigation
- LiveData - notify views about database change
- Lifecycle - perform an action when lifecycle state changes
- ViewModel - store and manage UI-related data in a lifecycle conscious way
-
Testing
- Unit Test
- JUnit - JUnit is a unit testing framework
- Robolectric - Robolectric is the industry-standard unit testing framework for Android.
- Mockito - Mockito is a mocking framework
- Truth - Truth is a library for performing assertions in tests
- Instrumentation Test
- Espresso -Espresso is an entire testing framework that allows you to test the UI of your Android app.
- Unit Test
Pronote implements MVVM architecture with the repository pattern
Dagger DI version
For old way of Dependency Injetion using Dagger2, see branch di-with-dagger
Support it by giving ⭐ for this repository
Designed and developed by ulvij (Ulvi Jabbarli)
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.