Skip to content

TedMoon99/Toucheese-Clean

Repository files navigation

스튜디오 정보에 대한 쉽고 빠른 접근 및 예약, Toucheese


💻 기술 스택

기술 분류 사용된 기술
Language
Android
Network Retrofit2, OkHttp3
Asynchronous Coroutines
DI Hilt & Dagger
Security JWT, Proguard, OAth
Media Coil
Social
Others

프로젝트 구조

Android App Architecture를 따르기 위하여 app, data, domain, presentation로 분리하고 멀티 모듈 방식을 채택하고 Clean Architecture를 적용하였다.

  • app 모듈: Dependency Injection(DI)를 담당, domain 모듈의 추상화된 비즈니스 로직에 대한 data 모듈의 실제 구현체를 주입
  • data 모듈: 실제 데이터 처리 및 domain 모듈에서 작성한 추상화된 비즈니스 로직을 구현(Datasource-Mapper-Model-Repository)
  • domain 모듈: 추상화된 비즈니스 로직을 선언(Model-Usecase-Repository)
  • presentation 모듈: 실제 유저에게 보여지는 View와 ViewHolder(ViewModel)을 구현, MVI 패턴 적용 image

모듈 의존성

  • app 모듈: data, domain, presentation (Repository, Usecase 등의 interface에 대한 구현체를 알기 위해 모든 모듈을 다 알고 있음)
  • data 모듈: domain
  • domain 모듈: X
  • presentation 모듈: domain

image

데이터 플로우

image

App 모듈

기능별로 Module을 정의하고 Hilt & Dagger를 사용하여 domain Layer에서 추상화된 비즈니스 로직의 실제 구현체를 주입하였습니다. 소셜 로그인의 SDK 초기화 로직을 담당하였습니다.

Data 모듈

  • Datasource-Mapper-Model-Repository구조
  • 서버와의 실질적인 통신을 구현
  • Token 재발급 로직을 위하여, InterceptorAuthenticator를 구현하였습니다.
  • @AuthClient: annotaion class / Authenticator를 주입하지 않은 OkHttpClient을 의미
  • @BaseClient: annotion class / Authenticator를 주입한 OkHttpClient를 의미
  • Auth 인증이 필요하지 않은 API에게는 @AuthClient를 적용하였습니다.
  • Auth 인증이 필요한 API에게는 @BaseClient를 적용하였습니다.
  • domain 모듈에서 추상화된 비즈니스 로직을 구현

Domain 모듈

  • Model-Usecase-Repository구조
  • 비즈니스 로직을 정의

Presentation 모듈

기존 프로젝트에서 MVVM 구조를 적용하였으나, 개선하기 위해 만들어진 프로젝트인 Toucheese-Clean에서는 Kotlin 및 Compose에 MVI가 더 적합하다고 생각하였습니다. 이를 구현하기 위하여 BaseViewModel을 정의하고, 화면별로 Contract 객체를 만들어 Event, State, Effect를 관리하였습니다.

또한, Component를 사용하여 UI 요소의 재사용성을 높일 수 있었습니다.

🔍 프로젝트 소개

TOUCHEESE = TOUCH + CHEESE "TOUCH"는 셔터 촬영의 순간과 플랫폼을 통해 검색하는 터치의 의미를 가지며, "CHEESE"는 촬영 시 모든 이들의 미소를 짓게 하는 마법 같은 의성어를 의미한다

이 두 단어가 결합된 TOUCHEESE사진관, 스튜디오 공간 대여, 스냅작가를 하나의 플랫폼 안에 모아, 고객과 파트너 간의 연결을 더 쉽고 효과적으로 만들어준다. 단순한 플랫폼을 넘어, 각 업체의 개성과 가치를 고객들에게 전달함으로써 귀사의 매출 성장에 새로운 활력을 불어넣는다.





📱 주요 기능

1. 컨셉 선택

촬영하고 싶은 컨셉의 사진을 선택하세요. 6가지의 컨셉의 사진을 촬영하는 스튜디오를 선택할 수 있습니다.

사진 컨셉 선택 컨셉 종류
- 생동감 있는
- 플래쉬/유광
- 흑백/블루 배우
- 내추럴 화보
- 선명한
- 수채화 그림체



2. 스튜디오 선택

- 스튜디오 검색

이미 정해둔 스튜디오가 있다면 검색 해보세요. 스튜디오명 으로 검색하면 바로 찾아볼 수 있습니다.

검색한 결과를 클릭 시 해당 스튜디오 상세 페이지로 이동합니다.

스튜디오 검색 검색창 검색 결과 검색 결과 클릭

- 컨셉별 스튜디오 조회

원하는 컨셉의 스튜디오를 선택하셨으면 해당 컨셉의 사진을 촬영하는 스튜디오 목록을 조회할 수 있습니다. 선택하신 컨셉의 사진을 촬영하는 스튜디오 목록을 조회해보세요. 스튜디오 목록에서는 스튜디오 대표사진, 스튜디오 대표 가격, 스튜디오 평점, 스튜디오명, 스튜디오 프로필 사진을 확인할 수 있습니다.

스튜디오 조회

- 스튜디오 필터링

스튜디오 조회 화면에서 원하는 조건을 설정해보세요. 필터링 기능을 통해 원하는 조건의 스튜디오를 간편하게 정리할 수 있습니다. 가격순, 인기순, 지역순 으로 필터링하여 원하는 조건의 스튜디오를 쉽고 빠르게 찾아볼 수 있습니다.

스튜디오 필터링 필터링 결과

- 스튜디오 상세 조회

스튜디오 조회 화면에서 원하는 스튜디오를 선택하세요. 스튜디오�와 관련된 상세정보를 확인할 수 있습니다. 스튜디오 상세 조회 화면에서는 시설 사진, 공지 사항, 위치, 평점, 영업 시간, 스튜디오 리뷰, 상품목록을 확인할 수 있습니다. 상품 목록을 통해 상품 관련 정보(상품명, 상품 정보, 상품 가격, 상품 리뷰수) 를 확인할 수 있습니다.

시설 사진, 위치, 평점 공지 사항 영업 시간 상품 목록 스튜디오 리뷰



3. 상품 선택

원하는 상품을 선택했으면 원하는 옵션을 선택해보세요. 상품 주문 화면에서는 가격, 인원수, 추가 구매옵션, 촬영날짜를 선택할 수 있습니다. 상품 주문화면에서 원하는 상품, 옵션, 촬영날짜를 선택했으면 주문을 클릭하세요!

상품 주문 화면 추가 구매 옵션 촬영날짜 날짜 및 시간 선택 선택 완료



4. 예약

- 장바구니

상품 주문이 완료되면 장바구니 화면으로 이동합니다. 장바구니 화면에서는 선택했던 추가 구매옵션을 변경할 수 있습니다.

장바구니 옵션 변경 전 옵션 변경 후 옵션 변경 완료 주문 선택

- 주문결제

장바구니에서 주문 상품을 선택한 후 예약하기를 누르면 주문 및 결제 화면으로 이동합니다. 선택하신 예약 정보가 맞는지 확인하시고 최종적으로 결제 수단을 선택하면 예약이 완료가 됩니다!

주문 및 결제 결제수단 선택 예약 완료

- 예약일정

주문하신 예약 상품은 예약일정 탭에서 확인이 가능합니다. 예약을 해놨는데 정말 불가피한 일로 촬영이 불가능하신 경우, 예약 일정 탭에서 예약일정 변경을 클릭하시면 날짜를 변경할 수 있습니다.

  • 상세한 변경: 예약일정을 연도, , , 시간별로 한 번에 변경할 수 있는 기능을 제공
  • 간편한 변경: 기존 예약일자에 해당하는 주 내에서 , 시간을 간편하게 변경할 수 있는 기능을 제공
예약 일정 조회 예약 일정 변경 화면 상세한 변경 상세 변경 완료 간편한 변경 예약일정 변경 완료



5. 문의

스튜디오 예약과 관련하여 궁금하신 사항이 있는 경우에 문의 탭을 이용하여 관리자에게 문의할 수 있습니다. 문의 탭에서는 문의 작성, 문의 내역 조회, 문의 답변 조회 기능을 제공합니다

문의 탭 문의 작성 사진 첨부 - 카메라 사진 첨부 - 앨범 첨부 완료

⬇️ 프로젝트 빌드 및 실행 방법

Play Store에서 "Toucheese" 검색 후 설치 및 실행

Google Play - Toucheese

About

Toucheese-CleanArchitecture

Resources

Stars

Watchers

Forks

Releases

No releases published

Packages

No packages published

Languages