Skip to content

dogeby/wheretogo-app

Repository files navigation

어디갈까

  • 한국관광공사 TourApi를 활용한 관광지 소개 앱입니다.
  • 원하는 지역의 관광지, 숙박, 음식점, 진행 중인 축제/행사/공연 등을 찾을 수 있습니다.

주요 화면

홈 화면

  • 현재 진행 중인 축제, 관광지, 숙박, 음식점 정보가 목록으로 표시됩니다. 각 항목을 클릭하면 상세 정보를 확인할 수 있습니다.
  • 화면 상단의 버튼을 클릭하여 지역별 콘텐츠나 검색 화면으로 쉽게 이동할 수 있습니다.
  • 목록 상단의 카테고리 타이틀을 클릭하면 해당 타입의 전체 목록을 탐색할 수 있습니다.

지역 선택 및 콘텐츠 목록 화면

  • 사용자가 원하는 지역을 선택하면, 해당 지역의 여행지, 축제/공연/행사, 숙박, 음식점 등의 콘텐츠 목록이 표시됩니다.
  • 콘텐츠 목록은 카테고리로 필터링할 수 있어, 사용자가 원하는 정보를 빠르게 찾을 수 있습니다.

콘텐츠 상세 화면

  • 콘텐츠의 사진, 카테고리, 개요, 전화번호, 주소 및 지도를 볼 수 있습니다.
  • 사진을 클릭하면 사진을 확대할 수 있는 화면이 나타납니다.

검색 화면

  • 키워드를 통해 원하는 콘텐츠를 찾을 수 있습니다.

기술 스택

  • Kotlin
  • Coroutine, Flow
  • Compose, Material3
  • Hilt
  • Navigation
  • Room
  • Datastore
  • Retrofit2
  • Kotlinx.serialization
  • Paging3
  • Coil
  • Junit4

기술 사용

앱 아키텍처 및 모듈화

  • MVVM
    • MVVM 패턴을 사용하여 앱의 구조를 데이터와 UI 로직으로 분리했습니다.
  • 멀티모듈
    • 앱을 여러 모듈로 분리하여 기능별로 구분하고 빌드 시간을 단축했습니다.

데이터 저장

  • Datastore
    • 안전한 데이터 저장을 지원하여 네트워크를 통해 받은 데이터를 캐시하는 데 사용했습니다.
  • Room
    • 사용자가 검색한 키워드를 저장하는 데 사용했습니다. Room은 SQLite를 추상화하여 데이터베이스 작업을 간편하게 해줍니다.

네트워크 통신

  • Retrofit2
    • REST API와의 네트워크 통신을 지원합니다. API 호출을 간편하게 처리할 수 있으며, 서버와의 데이터 교환을 원활하게 해주기 때문에 TourApi와의 통신에 사용했습니다.
  • Kotlinx.serialization
    • JSON과 Kotlin 데이터 클래스 간의 변환을 지원하며, 기본값 지원과 null 안전성 때문에 사용했습니다.

데이터 페이징

  • Paging3
    • TourApi의 대량 데이터를 효율적으로 로드하고 표시하는 데 사용했습니다. 사용자가 스크롤 하여 데이터의 끝에 도달하면 자동으로 추가 데이터를 요청하며, Coroutine과 Flow를 지원합니다.

CI

  • GitHub Actions
    • Pull Request 시 자동으로 테스트와 코드 스타일 검사를 수행합니다.
    • keystore.properties와 API 키를 보호하기 위해 GitHub Actions의 Secrets와 Variables 기능을 사용했습니다.

개발 일지

App Ui Design

About

No description, website, or topics provided.

Resources

Stars

Watchers

Forks

Packages

No packages published

Languages