It is an app that will fetch latest kotlin repositories in github using android jetpack components.
This project brings to table set of best practices, tools, and solutions:
- 100% Kotlin
- Android Jetpack
- A single-activity architecture, using the Navigation component
- Testing
- Dependency Injection with Hilt
- Static code analyse with ktlint
- CI integration by gihub actions
Technology | Description |
---|---|
Kotlin + Coroutines | Perform background operations |
hilt | Dependency injection |
Timber | Logging |
core-ktx | Kotlin extensions |
Flow | Notify views about database change |
swiperefreshlayout | Visual refresh layout |
Cardview | CardView layout |
Retrofit | A type-safe HTTP client for Android and Java/Kotlin |
Technology | Description |
---|---|
Navigation | Deal with whole in-app navigation |
Room | Database ORM |
Paging 3 | Deal with large data in RecycleView |
ViewModel | Store and manage UI-related data in a lifecycle conscious way |
Constraintlayout | Allows to build flexible layout |
Test | Tests |
Technology | Description |
---|---|
Robolectric | Run Instrumentation test in JVM |
Unit Tests | Unit testing |
core-testing | Used to sync background tasks |
kotlinx-coroutines-test | Used to sync coroutines jobs |
mockk | Mock objects using kotlin's style |
MockWebServer | Mock http/https requests |
fragment-testing | Fragment Test library |
hilt-android-testing | Dependency inject for Test |
Espresso | Use Espresso to write concise, beautiful, and reliable Android UI tests. |
Technology | Description |
---|---|
Klint | An anti-bikeshedding Kotlin linter with built-in formatter. |
- Architecture
- Clean Architecture
- MVVM (presentation layer)
- Gradle
The application is separated in modules as displayed below
NDA.
There are a few ways to open this project.
- Android Studio -> File -> New -> From Version control -> Git
- Enter
https://github.com/thiagoolsilva/github-search
into URL field
- Run
git clone https://github.com/thiagoolsilva/github-search
- Android Studio -> File -> Open
Thiago Lopes |
Copyright (c) 2022 Thiago Lopes da Silva
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.
`