Skip to content

YAPP-Github/27th-App-Team-1-iOS

Repository files navigation

NDGL-iOS

나도갈래 - 영상 속 여행을 내 일정으로!

📱 프로젝트 소개

NDGL(나도갈래)은 여행 콘텐츠를 따라가며 나만의 여행을 계획할 수 있는 iOS 앱입니다.

이제 여행은 '검색'이 아니라 '시청'에서 시작돼요

이제 여행은 '검색'이 아니라 '시청'에서 시작돼요. TV·영화·유튜브 속 여행지를 그대로 따라가는 여행, 나도갈래에서 시작하세요.

✨ 주요 기능

STEP 1~2 · 콘텐츠 고르고, 검증된 동선 그대로

STEP 1~2 콘텐츠 선택과 검증된 동선

STEP 3~4 · 내 취향대로 일정 커스텀 & 실전 정보

STEP 3~4 일정 커스텀과 실전 정보

STEP 3~4 상세 화면

STEP 5~6 · 변수에도 강하게 & 여행 중 필수 정보

STEP 5~6 Plan B와 여행 도구

따라가기 여행 지금 바로 시작하세요!

🛠 기술 스택

구분 기술
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                    # 빌드 스크립트

🏗 아키텍처

RIBs Architecture

┌─────────────────────────────────────────────────┐
│                    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에서 분기)

PR 규칙

  • 2명 이상 승인 시 머지 가능
  • CI 통과 필수

🔄 CI/CD

환경 트리거 동작
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

프로젝트 루트의 .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 열기

👥 팀원


김나훈

최안용

About

No description, website, or topics provided.

Resources

Stars

Watchers

Forks

Releases

No releases published

Packages

 
 
 

Contributors

Languages