Giter Club home page Giter Club logo

kakaoimglibrary's Introduction


header


Project

이 프로젝트는 카카오뱅크 과제를 모티브로 제작한 개인 프로젝트입니다.

검색 API는 Kakao Developers Open API인 다음 검색을 사용하였습니다.
유저는 검색을 통해 키워드에 맞는 이미지와 영상을 검색할 수 있습니다.
또한 왼쪽 상단의 Bookmark 버튼을 눌러 북마크 목록에 추가할 수 있습니다.
이렇게 저장된 정보는 SharedPreference로 기기내에 저장되어 앱이 종료돼도 재실행 시 다시 로드 됩니다.
infinite Scroll을 사용해 RecyclerView의 하단에 도착하면 자동으로 다음 페이지를 받아옵니다.
스크롤이 최상단이 아닐때만 나오는 FloatingActionButton으로 리스트의 최상단으로 이동할 수 있습니다.


Architecture

MVVM

  • ViewModel, LiveData, Repository을 사용한 MVVM 구조
  • 유지 보수성과 확장성을 높이기 위해 View와 Business Logic을 분리 하였습니다.

Style & Logo

  • 디테일과 완성도를 위해 실제 카카오 어플리케이션에서 사용하는 아이콘과 색상을 참조해서 만들었습니다.

imageimage


Tech

Android Jetpack

  • Data Binding
  • LiveData
  • ViewModel
  • SharedPreferences

Third Party Libraries

  • Retrofit2
  • Glide
  • Kotlin Coroutine

UI Frameworks and Components

  • ConstraintLayout
  • Material Design
  • RecyclerView
  • Fragment
  • ViewPager2
  • TabLayout
  • SearchView

Data Source


File Structure

  • common/
    • utils/
      • CommonUtils.kt : 프로젝트 전반에 사용되는 유틸리티 함수 모음
    • Constans : 프로젝트 전반에 사용되는 상수 값 모음
    • EntryType : 프로젝트 전반에 사용되는 진입타입 결정
    • SharedViewModel.kt : Fragment간 공유되는 데이터를 관리
  • data/
    • api/
      • Retrofit : Retrofit을 통한 API 호출 인터페이스 정의
    • model/
      • ImageSearchResponse : 이미지 정보를 받아오는 데이터 모델
      • VideoSearchResponse : 영상 정보를 받아오는 데이터 모델
    • Repository :
    • RetrofitClient : Retrofit 인스턴스 및 설정 관련 로직
  • main/
    • MainActivity : 앱의 메인 액티비티
    • MainTabs : 메인 탭 관리
    • ViewPagerAdapter : 뷰 페이저 어댑터
  • model/
    • BookmarkModel.kt: 북마크 데이터 모델
    • SearchModel.kt: 검색 데이터 모델
  • ui/ : 애플리케이션의 UI를 담당하는 Fragment 및 Adapter
    • bookmark/
      • BookmarkFramgment : 북마크 화면 UI 및 로직 처리
      • BookmarkListAdapter : 북마크 화면에서 사용하는 리사이클러뷰 어댑터
    • search/
      • SearchFragment : 검색 화면 UI 및 로직 처리
      • SearchListAdapter : 검색 화면에서 사용하는 리사이클러뷰 어댑터
  • viewmodel/: MVVM의 ViewModel을 포함하며, UI 로직과 데이터의 중개 역할을 합니다. LiveData를 사용하여 UI의 상태 및 데이터 변경을 관찰합니다. 비즈니스 로직이 구현되어 있습니다.
    • bookmark/
      • BookmarkViewModel : 북마크 화면의 데이터 및 로직 처리를 담당
      • BookmarkViewModelFactory : BookmarkViewModel 생성을 위한 Factory 클래스
    • search/
      • SearchViewModel: 검색 화면의 데이터 및 로직 처리를 담당
      • SearchViewModelFactory: SearchViewModel 생성을 위한 Factory 클래스

Showcase

imageimageimageimageimageimage

kakaoimglibrary's People

Contributors

softychoo avatar

Stargazers

 avatar SeoJungHan avatar

Watchers

 avatar

Recommend Projects

  • React photo React

    A declarative, efficient, and flexible JavaScript library for building user interfaces.

  • Vue.js photo Vue.js

    🖖 Vue.js is a progressive, incrementally-adoptable JavaScript framework for building UI on the web.

  • Typescript photo Typescript

    TypeScript is a superset of JavaScript that compiles to clean JavaScript output.

  • TensorFlow photo TensorFlow

    An Open Source Machine Learning Framework for Everyone

  • Django photo Django

    The Web framework for perfectionists with deadlines.

  • D3 photo D3

    Bring data to life with SVG, Canvas and HTML. 📊📈🎉

Recommend Topics

  • javascript

    JavaScript (JS) is a lightweight interpreted programming language with first-class functions.

  • web

    Some thing interesting about web. New door for the world.

  • server

    A server is a program made to process requests and deliver data to clients.

  • Machine learning

    Machine learning is a way of modeling and interpreting data that allows a piece of software to respond intelligently.

  • Game

    Some thing interesting about game, make everyone happy.

Recommend Org

  • Facebook photo Facebook

    We are working to build community through open source technology. NB: members must have two-factor auth.

  • Microsoft photo Microsoft

    Open source projects and samples from Microsoft.

  • Google photo Google

    Google ❤️ Open Source for everyone.

  • D3 photo D3

    Data-Driven Documents codes.