The application allows users to browse trending Kotlin repositories on GitHub and search for repositories by name. Results are displayed with pagination support.
Main functionality:
- Home Screen - Displays a paginated list of popular Kotlin repositories from GitHub.
- Search Screen - Users can search for repositories with debounced input, and the app displays paginated results.
- Repository Details - Shows detailed information about a selected repository including stars, forks, language, and owner info.
- Multi Module & Single Activity Concepts
- UI fully written in Jetpack Compose.
- Built 100% in Kotlin and uses Kotlin Coroutines.
- Uses many of the Architecture Components, including Lifecycle and Navigation.
- Hilt for dependency injection.
- Animations are displayed with Lottie.
- Images are shown using Coil.
- Retrofit2 & OkHttp3 - construct the REST APIs for Github API.
- Gradle version catalog TOML file for sharing dependencies.
- This project uses detekt as static code analysis tool and spotless for checking code style (Kotlin with ktlint, XMLs and Gradle Files).
All unit tests in this project were developed following the Test-Driven Development (TDD) methodology:
- RED — Write a failing test that defines the expected behavior before implementing the code.
- GREEN — Write the minimal production code to make the test pass.
- REFACTOR — Improve the code while keeping all tests green.
Tests follow the Given / When / Then structure and use the naming convention:
GIVEN <precondition> WHEN <action> THEN <expected result>
- domain — UseCases (
GetPagedKotlinReposUseCase,SearchReposUseCase,GetRepoUseCase), domain models. - data — Repository (
GithubRepositoryImpl), DataSource (GithubDataSource), mappers (RepoDtoMapper,RepoResultListDtoMapper,RepoDboMapper,UserDtoMapper,UserDboMapper), cache (RepositoryCache), paging (SearchPagingSource), interceptor (PagingInterceptor). - app — ViewModels (
SearchViewModel,HomeViewModel,DetailsViewModel), UI state classes (ScreenStatus,SearchState,DetailsScreenState), and error-to-UI status mapping extensions.
| Home | Search | Details |
|---|---|---|
![]() |
![]() |
![]() |
| Home | Search | Details |
|---|---|---|
![]() |
![]() |
![]() |





