NDGL(나도갈래)은 여행 콘텐츠를 따라가며 나만의 여행을 계획할 수 있는 iOS 앱입니다.
이제 여행은 '검색'이 아니라 '시청'에서 시작돼요. TV·영화·유튜브 속 여행지를 그대로 따라가는 여행, 나도갈래에서 시작하세요.
| 구분 | 기술 |
|---|---|
| Architecture | RIBs (Router-Interactor-Builder-Presenter) |
| UI | UIKit, SnapKit, Then |
| Reactive | RxSwift, RxCocoa |
| Network | Moya, Alamofire |
| Image | Kingfisher |
| Animation | Lottie |
| Push | Firebase Cloud Messaging (FCM) |
| Project | Tuist |
| CI/CD | GitHub Actions, Fastlane |
NDGL-iOS
├── Projects
│ ├── App # 앱 타겟
│ ├── Features # Feature 모듈
│ │ ├── RootFeature # 앱 진입점 RIB
│ │ ├── TabBarFeature # 탭바 RIB
│ │ ├── HomeFeature # 홈 화면
│ │ ├── FollowFeature # 따라가기 콘텐츠
│ │ ├── TravelFeature # 다가오는 여행
│ │ └── BaseFeatureDependency
│ ├── Domain # Entity, UseCase, Repository Interface
│ ├── Data # Repository 구현체, DTO
│ ├── Core # 공통 유틸리티
│ └── Modules
│ ├── DSKit # 디자인 시스템 (Color, Font, Component)
│ ├── Networks # 네트워크 레이어
│ └── ThirdPartyLibs # 외부 라이브러리 의존성
├── Plugins
│ └── EnvPlugin # 환경 설정 플러그인
├── Tuist # Tuist 설정
├── fastlane # CI/CD 스크립트
└── Scripts # 빌드 스크립트
┌─────────────────────────────────────────────────┐
│ Router │
│ (화면 전환, Child RIB Attach/Detach) │
└─────────────────────────────────────────────────┘
│
▼
┌─────────────────────────────────────────────────┐
│ Interactor │
│ (비즈니스 로직, 상태 관리) │
└─────────────────────────────────────────────────┘
│
┌──────────┴──────────┐
▼ ▼
┌──────────────────┐ ┌──────────────────┐
│ Presenter │ │ Builder │
│ (View ↔ 통신) │ │ (DI, RIB 생성) │
└──────────────────┘ └──────────────────┘
│
▼
┌──────────────────┐
│ ViewController │
│ (UI 렌더링) │
└──────────────────┘
┌─────────┐
│ App │
└────┬────┘
│
┌────────────────────┼────────────────────┐
▼ ▼ ▼
┌──────────┐ ┌──────────┐ ┌───────────┐
│ Data │ │ Networks │ │ Root │
└────┬─────┘ └────┬─────┘ │ Feature │
│ │ └─────┬─────┘
│ ┌────┴────┐ │
│ ▼ ▼ ▼
│ ┌────────┐┌────────┐ ┌───────────┐
│ │ Domain ││ Core │ │ TabBar │
│ └────────┘└────────┘ │ Feature │
│ └─────┬─────┘
│ │
▼ ▼
┌──────────┐ ┌───────────┐
│ Domain │ │ Home │
│ Networks │ │ Feature │
└──────────┘ └─────┬─────┘
│
▼
┌─────────────────────┐
│ BaseFeatureDependency│
└──────────┬──────────┘
│
┌───────────────┼───────────────┐
▼ ▼ ▼
┌────────┐ ┌────────┐ ┌───────┐
│ Core │ │ Domain │ │ DSKit │
└────┬───┘ └────┬───┘ └───┬───┘
│ │ │
└──────────────┴──────────────┘
│
▼
┌────────┐
│ Core │
└────┬───┘
│
▼
┌───────────────┐
│ ThirdPartyLibs│
└───────────────┘
| 모듈 | 의존성 |
|---|---|
| App | Data, Networks, RootFeature |
| RootFeature | TabBarFeature |
| TabBarFeature | HomeFeature |
| HomeFeature | BaseFeatureDependency |
| BaseFeatureDependency | Core, Domain, DSKit |
| Data | Domain, Networks |
| Networks | Core, Domain |
| Domain | Core |
| DSKit | Core |
| Core | ThirdPartyLibs (RxSwift, RIBs, SnapKit, Then, Moya, Kingfisher) |
| 브랜치 | 설명 |
|---|---|
main |
프로덕션 배포 브랜치 |
develop |
개발 통합 브랜치 |
feat/#이슈번호-작업내용 |
기능 개발 브랜치 |
fix/#이슈번호-작업내용 |
버그 수정 브랜치 |
hotfix/#이슈번호-작업내용 |
긴급 수정 브랜치 (develop에서 분기) |
- 2명 이상 승인 시 머지 가능
- CI 통과 필수
| 환경 | 트리거 | 동작 |
|---|---|---|
| CI | develop PR/Push |
빌드 체크, 린트 검사 |
| CD | main Push |
Fastlane을 통한 TestFlight 배포 |
feat: #이슈번호 - 작업 내용
| 타입 | 설명 |
|---|---|
feat |
새로운 기능 추가 |
fix |
버그 수정 |
docs |
문서 수정 |
style |
코드 포맷팅 (기능 변경 없음) |
refactor |
코드 리팩토링 |
test |
테스트 코드 추가/수정 |
chore |
빌드, 패키지 매니저 설정 |
design |
UI/UX 디자인 변경 |
StyleShare Swift Style Guide 준수
프로젝트 루트의 .swiftlint.yml 설정 파일 사용
- Xcode 16.0+
- iOS 17.0+
- mise (Tuist, Ruby 버전 관리)
# 1. 저장소 클론
git clone https://github.com/YourOrg/NDGL-iOS.git
cd NDGL-iOS
# 2. mise로 도구 설치
mise install
# 3. 의존성 설치
bundle install
tuist install
# 4. 프로젝트 생성
tuist generate
# 5. Xcode에서 NDGL-iOS.xcworkspace 열기
김나훈 |
최안용 |





