여행 경비 관리와 정산을 쉽게! 함께하는 여행을 더 스마트하게 관리하는 iOS 앱
- 여행 생성 및 관리: 여행 일정과 참가자 관리 (김민희 담당)
- 초대 코드: 친구들을 쉽게 여행에 초대
- 여행 참여/나가기: 실시간 멤버 관리 시스템
- 실시간 환율: 최신 환율 정보로 정확한 경비 계산
- 지출 내역 CRUD: 지출 조회, 생성, 수정, 삭제 (홍석현 담당)
- 카테고리별 분류: 식비, 숙박, 교통, 쇼핑 등 체계적 분류
- 실시간 경비 입력: 여행 중 발생하는 모든 경비 기록
- 스마트 정산: Pay(지출액) - Owe(책임액) 자동 계산으로 명확한 정산 제안
- 정산 내역 상세보기: 멤버별 투명한 정산 내역 공개
- 일별 지출 차트: 터치 인터랙션이 가능한 시각화 그래프
- 소셜 로그인: Google, Apple 로그인 지원 (서원지 담당)
- 스플래시 화면: 부드러운 앱 시작 경험
- 온보딩: 신규 사용자를 위한 친절한 가이드
- 안전한 인증: OAuth 2.0 기반 보안 시스템
- 프로필 수정: 사용자 정보 관리 (서원지 담당)
- 이미지 캐싱: ImageCacheService로 최적화된 프로필 이미지
- 버전 정보: 앱 버전 표시 및 관리
- 이중 트래킹: Firebase Analytics + Mixpanel 동시 수집
- 사용자 행동 분석: 앱 사용 패턴 및 성능 모니터링
- 딥링크 추적: 앱 진입 경로 분석
- 아름다운 디자인: 전문 디자이너의 UI/UX 설계 (오나람 담당)
- 커스텀 아이콘: 브랜드 일관성을 위한 전용 아이콘 디자인
- Skeleton Loading: 부드러운 로딩 경험
- Toast 알림: 직관적인 피드백 시스템
- 다크 모드: 시스템 설정에 따른 테마 자동 변경
Clean Architecture + TCA (The Composable Architecture) 기반의 확장 가능한 모듈러 구조
SseuDam/
├── 🎯 Features/ # 기능별 모듈
│ ├── Login/ # 로그인 & 소셜 인증 (서원지)
│ ├── OnBoarding/ # 신규 사용자 가이드
│ ├── Splash/ # 스플래시 화면 (서원지)
│ ├── Profile/ # 프로필 관리 (서원지)
│ ├── Travel/ # 여행 CRUD & 멤버 관리 (김민희)
│ ├── Member/ # 여행 참여/나가기 (김민희)
│ ├── Expense/ # 지출 등록
│ ├── ExpenseList/ # 지출 내역 & 차트 (홍석현)
│ ├── SaveExpense/ # 지출 저장 로직
│ ├── Settlement/ # 정산 메인 (홍석현)
│ ├── SettlementResult/ # 정산 결과 (홍석현)
│ ├── SettlementDetail/ # 정산 상세보기 (홍석현)
│ ├── Main/ # 메인 탭 네비게이션
│ └── Web/ # WebView 기능
│
├── 🏛️ Core Layers/
│ ├── Domain/ # 비즈니스 로직 & 엔터티
│ ├── Data/ # Repository 구현 & DTO
│ ├── NetworkService/ # API 통신
│ └── DesignSystem/ # UI 컴포넌트 & 디자인 시스템 (오나람)
│
├── 📱 App/
│ └── SseuDamApp/ # 메인 애플리케이션
│
├── ⚙️ Configuration/
│ ├── Config/ # 환경 설정
│ ├── Entitlements/ # 앱 권한 설정
│ └── Scripts/ # 빌드 스크립트
│
└── 🧪 Tests/ # 테스트 모음
- TCA (The Composable Architecture): 단방향 데이터 플로우, 상태 관리
- TCACoordinators: 네비게이션 관리 (홍석현 담당)
- Clean Architecture: 계층 분리 및 의존성 역전
- Tuist: 프로젝트 생성 및 모듈 관리 (홍석현 담당)
- Dependencies 시스템: @Dependency를 활용한 DI 간소화
- Supabase: Backend as a Service (서원지 담당)
- Moya: 타입 세이프한 네트워킹
- Alamofire: HTTP 네트워킹
- 실시간 환율 API: 정확한 통화 변환
- Google Sign-In: Google OAuth
- Apple Sign-In: Apple 로그인
- AppAuth-iOS: OAuth 2.0 / OpenID Connect
- Keychain Services: 보안 토큰 저장
- Firebase Analytics: 사용자 행동 분석
- Mixpanel: 고급 이벤트 추적
- 이중 트래킹: 데이터 정확도 향상을 위한 이중 수집 시스템
- SwiftData: iOS 17+ 로컬 데이터 저장
- UserDefaults: 사용자 설정 관리
- ImageCacheService: NSCache 기반 이미지 캐싱 (50MB 제한)
- AsyncStream: 여행 리스트 실시간 캐시 처리
- SwiftUI: 선언적 UI 프레임워크
- AsyncImage: 비동기 이미지 로딩
- Skeleton Loading: 로딩 상태 UX 개선
- Toast System: 사용자 피드백 향상
- Custom Design System: 일관된 브랜드 경험 (오나람 디자인)
- Fastlane: 배포 자동화
- GitHub Actions: QA 자동 빌드 시스템
- TestFlight: 베타 테스트 배포
- Xcode 16.0+: iOS 개발 환경
- 여행 관리 시스템: 여행 조회, 생성, 수정, 삭제
- 멤버십 관리: 여행 참여, 나가기 기능
- 여행 멤버 관리: 실시간 멤버 상태 관리
- 캐시 시스템: SwiftData 기반 데이터 저장 최적화
- 프로젝트 구조 설계: Clean Architecture + TCA 설계
- 지출 관리 시스템: 지출 내역 CRUD 전체 구현
- TCACoordinator: 화면 전환 및 네비게이션 관리
- 정산 시스템: 스마트 정산 계산 및 상세 내역 구현
- 시각화: 일별 지출 차트 및 인터랙션 구현
- 서버 개발: Supabase 기반 백엔드 API 설계 및 구현
- 인증 시스템: 스플래시, 회원가입, 로그인 전체 플로우
- 프로필 관리: 사용자 정보 관리 및 이미지 캐싱 시스템
- Analytics 시스템: Firebase + Mixpanel 이중 트래킹 구현
- 보안: OAuth 2.0 기반 안전한 인증 구현
- 앱 디자인: 전체 UI/UX 설계 및 디자인 시스템 구축
- 브랜드 아이덴티티: 아이콘 디자인 및 시각적 일관성 구축
- 사용자 경험: 직관적이고 아름다운 인터페이스 설계
- Xcode 16.0+
- iOS 17.0+
- Tuist 4.0+
- Ruby 3.0+ (FastLane용)
git clone https://github.com/SpartCodig-iOS/SseuDam.git
cd SseuDam# Homebrew 사용 (권장)
brew install tuist
# 또는 공식 설치 스크립트
curl -Ls https://install.tuist.io | bash# Xcode 프로젝트 생성
make generate
# 또는 직접 실행
tuist generateopen SseuDam.xcworkspace# 인터랙티브 Feature 생성
make feature
# > 예: Dashboard 입력 → DashboardFeature 모듈 생성
# 프로젝트 업데이트
make generate각 Feature는 독립적인 Demo 앱을 포함하여 개별 개발 및 테스트가 가능합니다.
# Xcode에서 {FeatureName}Demo 스킴 선택 후 실행
# 예: TravelFeatureDemo, LoginFeatureDemo 등# Debug 빌드
tuist build
# Release 빌드
tuist build -c release# 수동 실행
fastlane QA- Swift Style Guide: Swift API Design Guidelines 준수
- 접근 제어자:
private,fileprivate,internal,public적극 활용 - final 키워드: 상속이 불필요한 클래스에
final사용 - 타입 안전성:
as Any명시적 캐스팅으로 타입 모호성 방지
- TCA: State, Action, Reducer 패턴 준수
- 의존성 주입:
@Dependency활용한 DI 시스템 - 모듈 분리: Feature별 독립적인 모듈 구조
- Pay - Owe 알고리즘: 각 멤버의 순 차액 자동 계산
- 투명한 정산: 멤버별 결제/부담 내역 상세 공개
- 시각화: 일별 지출 차트로 지출 패턴 파악
- SwiftData: JSON 파일 방식에서 SwiftData로 전환
- ImageCacheService: Actor 패턴으로 thread-safe 이미지 캐싱
- AsyncStream: 실시간 데이터 스트리밍
- 이중 트래킹: Firebase + Mixpanel 동시 수집
- 데이터 비교: 두 플랫폼의 분석 결과 비교로 최적 솔루션 선택
- Xcode 16.0+
- iOS 17.0+
- Tuist 4.0+
- Swift 5.9+
- 모듈화: Feature별 독립 빌드로 컴파일 시간 50% 단축
- 이미지 캐싱: 50MB 제한 NSCache로 메모리 효율성 확보
- 데이터 캐싱: SwiftData 기반 오프라인 지원
- 네트워크 최적화: Moya + Alamofire 기반 효율적 API 통신
- 통합 캐시 매니저: 도메인별 캐시 서비스 통합
Copyright © 2025 SpartaCoding. All rights reserved.
🧳 함께하는 여행을 더 스마트하게, SseuDam과 함께하세요! ✨