Github Repository Search 어플리케이션 입니다.

Related tags

App github-search
Overview

github-search

🔎 Introduction

Github Search API 를 사용해서 검색된 레포지토리 리스트를 보여줍니다. EditText에서 텍스트를 입력하면 검색 API를 호출하고, debounce를 사용해서 호출 간격을 조절했습니다. 각 레포지토리는 유저프로필, 레포지토리 이름, 설명, 받은 star개수, 사용된 언어를 보여줍니다.

⚔️ Tech stack

  • Kotlin

  • MVVM Architecture Pattern

  • AAC (ViewModel)

  • Flow, Hilt, Paging, Rx

📎 Third party

  • Retrofit2

  • Glide

🗂 Project Structure

com.example.githubsearchapp
├── SearchApplication.kt
├── data
│   ├── paging
│   │   └── SearchPagingSource.kt
│   ├── remote
│   │   └── SearchRemoteDataSource.kt
│   ├── repository
│   │   └── SearchRepository.kt
│   └── vo
│       ├── Owner.kt
│       ├── Repo.kt
│       └── SearchResponse.kt
├── di
│   └── ServiceModule.kt
├── network
│   ├── SearchRetrofit.kt
│   └── service
│       └── SearchService.kt
└── ui
    └── main
        ├── LoadStateAdapter.kt
        ├── LoadStateViewHolder.kt
        ├── MainActivity.kt
        ├── MainPagingAdapter.kt
        └── MainViewModel.kt
  • data

    • paging

      • SearchPagingSource

        입력된 쿼리를 통해 레포지토리를 검색하는 API를 호출합니다. 10개의 데이터를 가져온 뒤 스크롤하면 position을 증가시켜서 다시 호출하고, LoadResult.Page 객체로 return합니다.

    • remote

      • SearchRemoteDataSource

        service의 getSearchRepos 함수를 호출합니다.

    • repository

      • SearchRepository

        SearchPagingSource 를 통해 얻은 Pager 객체를 flow로 바꿔 return 합니다.

    • vo

      • SearchResponse

        전체 레포지토리 수와 레포지토리 리스트를 가지고 있습니다.

      • Repo

        id, 이름, 레포지토리 작성자, 설명, star 개수, 사용된 언어를 가지고 있습니다.

      • Owner

        이름과 프로필 이미지를 가지고 있습니다.

  • di

    • ServiceModule

      Retrofit객체를 만들어 SearchRemoteDataSource에 넣어줍니다.

  • network

    • service

      • SearchService

        검색 API가 있습니다.

    • SearchRetrofit

      레트로핏 빌더를 사용하여 Service를 create하는 함수가 있습니다.

  • ui

    • main

      • MainActivity

        editText의 TextWatcher를 사용해서 값을 입력할때마다 Observable의 onNext로 발행합니다. (debounce를 사용해서 500ms내에 발생한 마지막 데이터로 제한합니다.)

        새로운 검색 쿼리를 입력하면 맨위로 scroll 됩니다. 그리고 검색 결과를 스크롤 할때 키보드가 hide되며 editText의 focus를 clear해줍니다.

      • MainPagingAdapter

        넘겨받은 PagingData들을 item_main 레이아웃에 set해줍니다.

      • MainViewModel

        repository에서 호출한 레포지토리 리스트 결과값을 Flow로 retrun합니다.

      • LoadStateAdapter & LoadStateViewHolder

        다음 페이지의 리스트를 가져올 때 맨 밑바닥에서 LoadState에 따라 결과를 보여줍니다.

        에러 -> TextView(에러 내용 표시), Button(Retry() 호출)

        로드중 -> Progressbar(로드 중인 상태 표시)

📱 Result

ezgif com-gif-maker (3)

You might also like...
Github-Api-Pagination-Example - Pagination 3 Example using Github Api

Github-Api-Pagination Pagination 3 Example using Github Api Tech Stack 100% Kotl

GithubUsersGalleryApp - Github users app consumed Github API

GithubUsersApp ✨ Github users app consumed Github API ✨ Architecture Using Moder

GitHub application fetches events, repositories and profile using GitHub APIs
GitHub application fetches events, repositories and profile using GitHub APIs

GitHub application using GitHub REST API Dagger MVVM architecture Mockk Jetpack Compose Kotlin Coroutines Application pages Attention If you want to u

Android app to search for Vaccines in India

Vaccine Finder Android app to search for Vaccines in India About Vaccine Finder Vaccine Finder is an Android app that checks for vaccines on your beha

Movie Search App - using Flow, Suspend Function, AAC ViewModel, Dagger Hilt and so on.
Movie Search App - using Flow, Suspend Function, AAC ViewModel, Dagger Hilt and so on.

Movie Search App - using Flow, Suspend Function, AAC ViewModel, Dagger Hilt and so on.

A manga reader app that can be used save / search / find and read latest manga / manhwa
A manga reader app that can be used save / search / find and read latest manga / manhwa

A manga reader app that can be used save / search / find and read latest manga / manhwa

A recipe app where user can search new recipes from an API
A recipe app where user can search new recipes from an API

Recipe -app This is a recipe app where user can search new recipes from an API, save them, create their own recipes and edit saved recipes. The app is

A Mobile application (Android), which facilitates the search for a medication, a pharmacy using geolocation.

#Pharmacom Pharmacom, est une application mobile natif - compatible avec mobile et tablette. Cette application a comme but principale de servir les ci

ComicsShow app: Display comics and search for any favourites one

ComicsShow app: Display comics and search for any favourites one. Technologies used: Koin: For injecting class and providing modules on runtime :). Vi

Owner
null
Kurly-assignment - Search GitHub Repository App For Android

Search GitHub Repository App Outline Github 내의 수많은 리포지토리를 키워드를 통해 검색할 수 있습니다. Ho

Minjeong Kim 0 Jan 5, 2022
안드로이드 개발에 관련된 내용이라면 어떤 것이든 발표 형식으로 공유하는 스터디 입니다.

Android-Seminar-Study Study Notion : Study Notion Link ?? 스터디 규칙 / 소개 안드로이드 개발에 관련된 내용이라면 어떤 것이든 공유하는 스터디 입니다. 안드로이드 개발을 배워 나가면서 모르고 무심코 지나 쳤던것, 좀 더 공

Kangraemin 6 Nov 7, 2021
DevFest 2021 ComposeFest 코드랩 Repo 입니다

ComposeFest2021 안녕하세요 Compose 코드랩에 오신걸 환영합니다. 다음은 코드랩을 진행하기 위한 안내입니다. 진행 일정 2021년 11월 1일 ~ 30일 매주 월요일 코드랩 진행을 돕기 위한 주요 설명 영상을 공개합니다. ?? 영상 보러가기 Compos

GDG Korea Android 127 Nov 7, 2022
📺 A sample app to showcase Twyper with GitHub repo search API

swipe-search A sample app to showcase Twyper with GitHub repo search API ?? Demo Screen.Recording.2022-02-20.at.9.36.10.PM.mov ?? Tech Stack What How

theapache64 26 Jul 18, 2022
Github Repo Search Android App

Github Repo Search Android App Modular android app for searching trending Github repositories and the details of each repository.

mertselcukdemir 4 Mar 7, 2022
GithubUserApps is an application that can Search and Displaying the details of a User github

GithubUserApps is an application that can Search and Displaying the details of a User github. this apps is written in Kotlin with MVVM Architecture, RXJava3, Kotlin Coroutines, ROOM Database, Retrofit, and Data Store Preferences to saving the Dark/Light Theme Key-Value.

Joshua Jeremia 2 Aug 31, 2022
This projects implements Github User search with Android Pagination 3 Library

GithubUser Search An Android App that lists the github users sorted by most followers Resources GitHub API Building Clone the git repository Build ./g

Siyanatullah Khan 3 Oct 12, 2022
Android application for GitHub user search and view user details

GitHubApp Android application for GitHub user search and view user details Architecture UI observing the live data for the main list as received from

null 1 Mar 29, 2022
An app that allows you to search for Github profiles of users and their repositories [d.light Android Engineer Test], for the Android Engineer Role

An app that allows you to search for Github profiles of users and their repositories [d.light Android Engineer Test], for the Android Engineer Role

Joel Kanyi 9 Aug 26, 2022
Git history is an android application that simply tracks GitHub repository's issues.

Git History About Git history is an android application that simply tracks GitHub repository's issues. You can search for user and get all public repo

Aditya Sutar 0 Oct 17, 2021