다크 모드
iOS 기술 스택 개요
기본 환경
| 항목 | 버전/사양 |
|---|---|
| 언어 | Swift 5.9+ |
| UI 프레임워크 | SwiftUI |
| 최소 지원 버전 | iOS 17.2+ |
| 대상 디바이스 | iPhone |
| 패키지 관리 | SPM (Swift Package Manager) |
| 프로젝트 생성 | Tuist (.mise.toml로 버전 관리) |
| 빌드 도구 | Xcode + Makefile |
주요 의존성
| 라이브러리 | 용도 | 버전 |
|---|---|---|
| Swinject | 의존성 주입 (DI) | 2.9+ |
| Moya / Alamofire | 네트워크 추상화 레이어 | 15.0+ |
| Firebase (Analytics, Crashlytics, Messaging) | 분석, 크래시 리포트, 푸시 알림 | 11.0+ |
| SendbirdChatSDK | 실시간 채팅 | 4.0+ |
| Kingfisher | 이미지 로딩/캐싱 | 8.3+ |
| Lottie | 애니메이션 | 4.3+ |
| RevenueCat | 인앱 결제/구독 관리 | 5.32+ |
| Kakao SDK (Common, Share, Template) | 카카오 공유 기능 | 2.24+ |
| Branch SDK | 딥링크/어트리뷰션 | 2.1+ |
| Google Places | 장소 검색 | 9.4+ |
| Localize-Swift | 다국어 지원 (en, ko, ja) | 3.2+ |
| PhoneNumberKit | 전화번호 형식 처리 | 4.1+ |
| Pulse / PulseUI | 네트워크 디버깅 | 5.1+ |
| Segment Analytics | 사용자 행동 분석 | 1.7+ |
| QRCode | QR 코드 생성 | 27.11+ |
아키텍처 접근 방식
truloop iOS는 Clean Architecture + MVVM 패턴을 채택하고 있으며, Tuist 기반 멀티 모듈 구조로 구성되어 있습니다.
App (Presentation) --> Features --> Domain --> Repository --> Networking- 단방향 의존성: 상위 레이어에서 하위 레이어로만 의존
- Protocol 기반 추상화: Domain 레이어에서 Repository 인터페이스를 정의하고, Repository 레이어에서 구현
- Swinject Assembly 패턴: 각 모듈별 Assembly를 통한 의존성 등록/해결
- Builder 패턴: Feature 모듈 내 화면 생성 시 Builder를 통한 의존성 주입
정보
Tuist를 사용하여 프로젝트를 생성하므로, .xcodeproj 파일은 직접 수정하지 않고 Project.swift를 통해 관리합니다.
관련 문서
변경 이력
| 날짜 | 변경 내용 |
|---|---|
| 2026-03-10 | Tuist 버전 표기를 .mise.toml 기반 관리로 수정 |