내한 공연 정보, 티켓팅 알림
- 소셜로그인 기능 (카카오, 애플)
- 티켓팅 임박한 공연 및 추천 공연 조회 기능
- 전체 공연 목록 조회 기능
- 공연 세부 정보 조회 기능
- 공연 티켓팅 알림 시간(5분 전, 10분 전 30분 전, 60분 전) 설정 기능
- 알림 설정한 공연 조회 기능
- 관심 공연 설정 기능
- 장르 구독 및 구독 관리 기능
- 아티스트 구독 및 구독 관리 기능
- 아티스트 및 공연 검색 기능
| 티켓팅 예정 및 추천 공연 | 티켓팅 알림 설정 | 알림 설정한 공연 조회 | 장르 구독 |
|---|---|---|---|
![]() |
![]() |
![]() |
![]() |
| 아티스트 구독 | 아티스트 및 공연 검색 | 카카오 로그인 | 애플 로그인 |
![]() |
![]() |
![]() |
![]() |
UIKit,MVVM,SnapKit,Kingfisher,Alamofire,Swift Concurrency,RxSwift,Unidirectional Architecture,Swift Dependencies,Clean Architecture,KakaoSDK
- 직접 설계해 오픈소스로 배포한 단방향 아키텍처(RxCompse)를 이번 프로젝트에 적용하여 라이브러리의 적용 가능성과 실효성을 검증했습니다.
- 탭바의 클릭 이벤트를
BehaviorSubject로 방출하고, 이를UITabBarController의selectedIndex에 바인딩하여 커스텀 탭바를 구현했습니다. DTO에Generic을 도입하여 외부 데이터를 클라이언트 기능에 적합한 형태로 가공하고, 외부 변경 사항에 유연하게 대응했습니다.Data단의 주요 기능을Repository로 추상화하여 비즈니스 로직과의 결합도를 낮추고, 재사용성을 높였습니다.Feature단에 필요한 로직을UseCase로 명시하여Feature계층과Data계층 간 의존성을 분리했습니다.Swift Dependencies의testValue를 활용해 테스트 가능한 환경을 구성하고,previewValue를 통해 프리뷰 환경에서 목업 데이터를 제공하여 불필요한 API 호출을 줄였습니다.Repository를Protocol이 아니라 메서드들을 클로저 형태로 인스턴스에 주입받는 구조체로 추상화하여, 추상화된Repository의 인스턴스 접근을 통해UseCase가 불필요한 의존 없이 꼭 필요한 메서드만 활용할 수 있도록 구성했습니다.Router Pattern과Generic을 활용하여 네트워크 코드 추상화함으로써Alamofire기반 코드의 재사용성을 높였습니다.Alamofire의RequestInterceptor를 활용해 요청 헤더에 토큰을 자동으로 적용하고, 액세스 토큰 오류 발생 시 토큰 재발급을 수행하는 로직을 구현했습니다.DataSource의 섹션과 데이터를 열거형으로 정의하고, 이를 기반으로Compositional Layout을 구성하여 하나의 화면에서 다양한 섹션과 셀 구성을 유연하게 지원했습니다.visibleItemsInvalidationHandler를 사용해 셀의 위치를 동적으로 계산하고, 위치에 따라 투명도 및 크기가 변하는 캐러셀(Carousel) 뷰를 구현했습니다.SwiftJWT를 활용해 애플 리프레시 토큰 발급과 회원 탈퇴 요청에 필요한Payload를 생성하여 애플 로그인 탈퇴 기능을 구현했습니다.








