Skip to content

A sample project to demonstrate minimalist implementation of Github API in a modularised Android app using MVVM, Jetpack components, Kotlin, Hilt, UI tests, Unit tests and more.

License

Notifications You must be signed in to change notification settings

shahrukhamd/GithubUser

Repository files navigation

GithubUser App (work in progress)

A sample project demonstrating the use of the latest design patterns, libraries, architecture and more.

It fetches data from Github search and user details APIs and show it to the user in the list and detailed screens. A searched user can be starred from the list or the details screen and the data will be saved in the local database. A user profile can be shared or open in a browser from the details screen.

Tech stack and libraries

Kotlin

  • Coroutine - Doing work asynchronously
  • Flow - Getting results from asynchronous workers as soon as they're available

Android Jetpack

  • HILT - Dependency injection
  • Navigation - Moving between activities and fragments
  • Paging - Load data in small chunks as user scroll list
  • Room - Saving user data on device locally

Networking

  • Retrofit2 - REST Client for Android and Java
  • Okhttp3 Logging Interceptor - An OkHttp interceptor which logs HTTP request and response data (used with Retrofit)
  • Moshi - To convert Java objects to JSON and back (used with Retrofit)

Testing

  • Espresso - Easy, concise and powerful UI testing
  • MockK - Mocking library for Kotlin
  • Truth - Fluent assertions for Java and Android
  • Turbine - Kotlin flow testing made easy

Tools

  • Glide - Fast and efficient image loading
  • Timber - Logger with a small, extensible API providing utility on top of Android's normal Log class

Upcoming features

Updates will include incorporating additional Jetpack components and updating existing ones as the component libraries evolve.

Interested in seeing a particular feature? Please open a new issue.

License

MIT License (https://opensource.org/licenses/MIT)

Copyright (c) 2023 Shahrukh Ahmed Siddiqui

Permission is hereby granted, free of charge, to any person obtaining a copy
of this software and associated documentation files (the "Software"), to deal
in the Software without restriction, including without limitation the rights
to use, copy, modify, merge, publish, distribute, sublicense, and/or sell
copies of the Software, and to permit persons to whom the Software is
furnished to do so, subject to the following conditions:

The above copyright notice and this permission notice shall be included in all
copies or substantial portions of the Software.

THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR
IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY,
FITNESS FOR A PARTICULAR PURPOSE AND NON-INFRINGEMENT. IN NO EVENT SHALL THE
AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER
LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING FROM,
OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN THE
SOFTWARE.

Support

This project is authored and maintained by shahrukhamd.

buy me coffee