Skip to content

AlreadyTakenSeat/ShowPot-iOS

Folders and files

NameName
Last commit message
Last commit date

Latest commit

 
 
 
 
 
 
 
 
 
 
 

Repository files navigation

ShowPot

내한 공연 정보, 티켓팅 알림

소개

최종

기능

  • 소셜로그인 기능 (카카오, 애플)
  • 티켓팅 임박한 공연 및 추천 공연 조회 기능
  • 전체 공연 목록 조회 기능
  • 공연 세부 정보 조회 기능
  • 공연 티켓팅 알림 시간(5분 전, 10분 전 30분 전, 60분 전) 설정 기능
  • 알림 설정한 공연 조회 기능
  • 관심 공연 설정 기능
  • 장르 구독 및 구독 관리 기능
  • 아티스트 구독 및 구독 관리 기능
  • 아티스트 및 공연 검색 기능
티켓팅 예정 및 추천 공연 티켓팅 알림 설정 알림 설정한 공연 조회 장르 구독
Simulator Screen Recording - iPhone 16 Pro - 2025-04-24 at 00 44 21 Simulator Screen Recording - iPhone 16 Pro - 2025-04-23 at 21 38 44 Simulator Screen Recording - iPhone 16 Pro - 2025-04-23 at 21 39 12 Simulator Screen Recording - iPhone 16 Pro - 2025-04-23 at 21 27 30
아티스트 구독 아티스트 및 공연 검색 카카오 로그인 애플 로그인
Simulator Screen Recording - iPhone 16 Pro - 2025-04-23 at 21 27 52 Simulator Screen Recording - iPhone 16 Pro - 2025-04-24 at 00 45 32 Simulator Screen Recording - iPhone 16 Pro - 2025-04-23 at 21 42 55 Simulator Screen Recording - iPhone 16 Pro - 2025-04-23 at 21 43 27

기술

UIKit, MVVM, SnapKit, Kingfisher, Alamofire, Swift Concurrency, RxSwift, Unidirectional Architecture, Swift Dependencies, Clean Architecture, KakaoSDK

  • 직접 설계해 오픈소스로 배포한 단방향 아키텍처(RxCompse)를 이번 프로젝트에 적용하여 라이브러리의 적용 가능성과 실효성을 검증했습니다.
  • 탭바의 클릭 이벤트를 BehaviorSubject로 방출하고, 이를 UITabBarControllerselectedIndex에 바인딩하여 커스텀 탭바를 구현했습니다.
  • DTOGeneric을 도입하여 외부 데이터를 클라이언트 기능에 적합한 형태로 가공하고, 외부 변경 사항에 유연하게 대응했습니다.
  • Data 단의 주요 기능을 Repository로 추상화하여 비즈니스 로직과의 결합도를 낮추고, 재사용성을 높였습니다.
  • Feature 단에 필요한 로직을 UseCase로 명시하여 Feature 계층과 Data 계층 간 의존성을 분리했습니다.
  • Swift DependenciestestValue를 활용해 테스트 가능한 환경을 구성하고, previewValue를 통해 프리뷰 환경에서 목업 데이터를 제공하여 불필요한 API 호출을 줄였습니다.
  • RepositoryProtocol이 아니라 메서드들을 클로저 형태로 인스턴스에 주입받는 구조체로 추상화하여, 추상화된 Repository의 인스턴스 접근을 통해 UseCase가 불필요한 의존 없이 꼭 필요한 메서드만 활용할 수 있도록 구성했습니다.
  • Router Pattern과 Generic을 활용하여 네트워크 코드 추상화함으로써 Alamofire 기반 코드의 재사용성을 높였습니다.
  • AlamofireRequestInterceptor를 활용해 요청 헤더에 토큰을 자동으로 적용하고, 액세스 토큰 오류 발생 시 토큰 재발급을 수행하는 로직을 구현했습니다.
  • DataSource의 섹션과 데이터를 열거형으로 정의하고, 이를 기반으로 Compositional Layout을 구성하여 하나의 화면에서 다양한 섹션과 셀 구성을 유연하게 지원했습니다.
  • visibleItemsInvalidationHandler를 사용해 셀의 위치를 동적으로 계산하고, 위치에 따라 투명도 및 크기가 변하는 캐러셀(Carousel) 뷰를 구현했습니다.
  • SwiftJWT를 활용해 애플 리프레시 토큰 발급과 회원 탈퇴 요청에 필요한 Payload를 생성하여 애플 로그인 탈퇴 기능을 구현했습니다.

About

이미 선택된 좌석입니다

Resources

Stars

Watchers

Forks

Packages

No packages published

Contributors 3

  •  
  •  
  •  

Languages