-
Notifications
You must be signed in to change notification settings - Fork 1
docs: #16 - README.md 작성 #17
New issue
Have a question about this project? Sign up for a free GitHub account to open an issue and contact its maintainers and the community.
By clicking “Sign up for GitHub”, you agree to our terms of service and privacy statement. We’ll occasionally send you account related emails.
Already on GitHub? Sign in to your account
Changes from all commits
File filter
Filter by extension
Conversations
Jump to
Diff view
Diff view
There are no files selected for viewing
| Original file line number | Diff line number | Diff line change | ||||||||||||||||||||
|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|
| @@ -1 +1,241 @@ | ||||||||||||||||||||||
| # 27th-App-Team-1-iOS | ||||||||||||||||||||||
| # NDGL-iOS | ||||||||||||||||||||||
|
|
||||||||||||||||||||||
| <p align="center"> | ||||||||||||||||||||||
| <img src="https://img.shields.io/badge/Swift-5.0-orange.svg" /> | ||||||||||||||||||||||
| <img src="https://img.shields.io/badge/iOS-17.0+-blue.svg" /> | ||||||||||||||||||||||
| <img src="https://img.shields.io/badge/Tuist-4.x-purple.svg" /> | ||||||||||||||||||||||
| <img src="https://img.shields.io/badge/Architecture-RIBs-green.svg" /> | ||||||||||||||||||||||
|
Comment on lines
+4
to
+7
There was a problem hiding this comment. Choose a reason for hiding this commentThe reason will be displayed to describe this comment to others. Learn more. 뱃지 이미지에 대체 텍스트(alt text)를 추가하세요. 접근성 향상을 위해 모든 뱃지 이미지에 alt 속성을 추가해야 합니다. 스크린 리더 사용자를 위해 각 뱃지가 나타내는 내용을 설명하는 텍스트가 필요합니다. ♿ 접근성 개선을 위한 제안 <p align="center">
- <img src="https://img.shields.io/badge/Swift-5.0-orange.svg" />
- <img src="https://img.shields.io/badge/iOS-17.0+-blue.svg" />
- <img src="https://img.shields.io/badge/Tuist-4.x-purple.svg" />
- <img src="https://img.shields.io/badge/Architecture-RIBs-green.svg" />
+ <img src="https://img.shields.io/badge/Swift-5.0-orange.svg" alt="Swift 5.0" />
+ <img src="https://img.shields.io/badge/iOS-17.0+-blue.svg" alt="iOS 17.0 이상" />
+ <img src="https://img.shields.io/badge/Tuist-4.x-purple.svg" alt="Tuist 4.x" />
+ <img src="https://img.shields.io/badge/Architecture-RIBs-green.svg" alt="RIBs 아키텍처" />
</p>Based on learnings: "markdownlint-cli2 flagged missing alt text for images (MD045)" 📝 Committable suggestion
Suggested change
🧰 Tools🪛 markdownlint-cli2 (0.18.1)4-4: Images should have alternate text (alt text) (MD045, no-alt-text) 5-5: Images should have alternate text (alt text) (MD045, no-alt-text) 6-6: Images should have alternate text (alt text) (MD045, no-alt-text) 7-7: Images should have alternate text (alt text) (MD045, no-alt-text) 🤖 Prompt for AI Agents |
||||||||||||||||||||||
| </p> | ||||||||||||||||||||||
|
|
||||||||||||||||||||||
| ## 📱 프로젝트 소개 | ||||||||||||||||||||||
|
|
||||||||||||||||||||||
| NDGL은 여행 콘텐츠를 따라가며 나만의 여행을 계획할 수 있는 iOS 앱입니다. | ||||||||||||||||||||||
|
|
||||||||||||||||||||||
| ## 🛠 기술 스택 | ||||||||||||||||||||||
|
|
||||||||||||||||||||||
| | 구분 | 기술 | | ||||||||||||||||||||||
| |:---:|:---| | ||||||||||||||||||||||
| | **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](https://github.com/StyleShare/swift-style-guide) 준수 | ||||||||||||||||||||||
|
|
||||||||||||||||||||||
| ### SwiftLint | ||||||||||||||||||||||
| 프로젝트 루트의 `.swiftlint.yml` 설정 파일 사용 | ||||||||||||||||||||||
|
|
||||||||||||||||||||||
| ## 🚀 시작하기 | ||||||||||||||||||||||
|
|
||||||||||||||||||||||
| ### 요구사항 | ||||||||||||||||||||||
| - Xcode 16.0+ | ||||||||||||||||||||||
| - iOS 17.0+ | ||||||||||||||||||||||
| - [mise](https://mise.jdx.dev/) (Tuist, Ruby 버전 관리) | ||||||||||||||||||||||
|
|
||||||||||||||||||||||
| ### 설치 및 실행 | ||||||||||||||||||||||
|
|
||||||||||||||||||||||
| ```bash | ||||||||||||||||||||||
| # 1. 저장소 클론 | ||||||||||||||||||||||
| git clone https://github.com/YourOrg/NDGL-iOS.git | ||||||||||||||||||||||
|
There was a problem hiding this comment. Choose a reason for hiding this commentThe reason will be displayed to describe this comment to others. Learn more. 플레이스홀더 URL을 실제 저장소 URL로 수정하세요.
PR URL을 기반으로 실제 저장소는 🔧 제안된 수정저장소명을 NDGL-iOS로 변경하는 경우: -git clone https://github.com/YourOrg/NDGL-iOS.git
+git clone https://github.com/YAPP-Github/NDGL-iOS.git
cd NDGL-iOS현재 저장소명을 유지하는 경우: -git clone https://github.com/YourOrg/NDGL-iOS.git
-cd NDGL-iOS
+git clone https://github.com/YAPP-Github/27th-App-Team-1-iOS.git
+cd 27th-App-Team-1-iOS📝 Committable suggestion
Suggested change
🤖 Prompt for AI Agents |
||||||||||||||||||||||
| cd NDGL-iOS | ||||||||||||||||||||||
|
|
||||||||||||||||||||||
| # 2. mise로 도구 설치 | ||||||||||||||||||||||
| mise install | ||||||||||||||||||||||
|
|
||||||||||||||||||||||
| # 3. 의존성 설치 | ||||||||||||||||||||||
| bundle install | ||||||||||||||||||||||
| tuist install | ||||||||||||||||||||||
|
|
||||||||||||||||||||||
| # 4. 프로젝트 생성 | ||||||||||||||||||||||
| tuist generate | ||||||||||||||||||||||
|
|
||||||||||||||||||||||
| # 5. Xcode에서 NDGL-iOS.xcworkspace 열기 | ||||||||||||||||||||||
| ``` | ||||||||||||||||||||||
|
|
||||||||||||||||||||||
| ## 👥 팀원 | ||||||||||||||||||||||
|
|
||||||||||||||||||||||
| <table> | ||||||||||||||||||||||
| <tr> | ||||||||||||||||||||||
| <td align="center"> | ||||||||||||||||||||||
| <a href="https://github.com/KimNahun"> | ||||||||||||||||||||||
| <img src="https://github.com/KimNahun.png" width="120" /> | ||||||||||||||||||||||
| <br /> | ||||||||||||||||||||||
| <b>김나훈</b> | ||||||||||||||||||||||
| </a> | ||||||||||||||||||||||
| </td> | ||||||||||||||||||||||
| <td align="center"> | ||||||||||||||||||||||
| <a href="https://github.com/ChoiAnYong"> | ||||||||||||||||||||||
| <img src="https://github.com/ChoiAnYong.png" width="120" /> | ||||||||||||||||||||||
| <br /> | ||||||||||||||||||||||
| <b>최안용</b> | ||||||||||||||||||||||
| </a> | ||||||||||||||||||||||
| </td> | ||||||||||||||||||||||
| </tr> | ||||||||||||||||||||||
|
Comment on lines
+222
to
+240
There was a problem hiding this comment. Choose a reason for hiding this commentThe reason will be displayed to describe this comment to others. Learn more. 팀원 프로필 이미지에 대체 텍스트를 추가하세요. 접근성 향상을 위해 팀원 프로필 이미지에도 alt 속성을 추가해야 합니다. ♿ 접근성 개선을 위한 제안 <td align="center">
<a href="https://github.com/KimNahun">
- <img src="https://github.com/KimNahun.png" width="120" />
+ <img src="https://github.com/KimNahun.png" width="120" alt="김나훈 프로필" />
<br />
<b>김나훈</b>
</a>
</td>
<td align="center">
<a href="https://github.com/ChoiAnYong">
- <img src="https://github.com/ChoiAnYong.png" width="120" />
+ <img src="https://github.com/ChoiAnYong.png" width="120" alt="최안용 프로필" />
<br />
<b>최안용</b>
</a>
</td>Based on learnings: "markdownlint-cli2 flagged missing alt text for images (MD045)" 🧰 Tools🪛 markdownlint-cli2 (0.18.1)228-228: Images should have alternate text (alt text) (MD045, no-alt-text) 235-235: Images should have alternate text (alt text) (MD045, no-alt-text) 🤖 Prompt for AI Agents |
||||||||||||||||||||||
| </table> | ||||||||||||||||||||||
There was a problem hiding this comment.
Choose a reason for hiding this comment
The reason will be displayed to describe this comment to others. Learn more.
🧩 Analysis chain
🏁 Script executed:
Repository: YAPP-Github/27th-App-Team-1-iOS
Length of output: 464
🏁 Script executed:
Repository: YAPP-Github/27th-App-Team-1-iOS
Length of output: 57
🏁 Script executed:
# Read the README to check line 198 and surrounding context wc -l README.mdRepository: YAPP-Github/27th-App-Team-1-iOS
Length of output: 88
🏁 Script executed:
Repository: YAPP-Github/27th-App-Team-1-iOS
Length of output: 343
🏁 Script executed:
Repository: YAPP-Github/27th-App-Team-1-iOS
Length of output: 251
🏁 Script executed:
Repository: YAPP-Github/27th-App-Team-1-iOS
Length of output: 103
🏁 Script executed:
Repository: YAPP-Github/27th-App-Team-1-iOS
Length of output: 50387
🏁 Script executed:
Repository: YAPP-Github/27th-App-Team-1-iOS
Length of output: 305
🏁 Script executed:
Repository: YAPP-Github/27th-App-Team-1-iOS
Length of output: 889
🏁 Script executed:
Repository: YAPP-Github/27th-App-Team-1-iOS
Length of output: 291
🏁 Script executed:
Repository: YAPP-Github/27th-App-Team-1-iOS
Length of output: 357
🏁 Script executed:
Repository: YAPP-Github/27th-App-Team-1-iOS
Length of output: 57
🏁 Script executed:
Repository: YAPP-Github/27th-App-Team-1-iOS
Length of output: 57
🏁 Script executed:
Repository: YAPP-Github/27th-App-Team-1-iOS
Length of output: 1648
🏁 Script executed:
Repository: YAPP-Github/27th-App-Team-1-iOS
Length of output: 218
🏁 Script executed:
Repository: YAPP-Github/27th-App-Team-1-iOS
Length of output: 144
🏁 Script executed:
Repository: YAPP-Github/27th-App-Team-1-iOS
Length of output: 3591
🏁 Script executed:
Repository: YAPP-Github/27th-App-Team-1-iOS
Length of output: 4767
🏁 Script executed:
Repository: YAPP-Github/27th-App-Team-1-iOS
Length of output: 827
🏁 Script executed:
Repository: YAPP-Github/27th-App-Team-1-iOS
Length of output: 343
Swift 버전 뱃지를 업데이트하세요.
Xcode 16.0+를 요구사항으로 명시했는데(README 198줄), 뱃지는 Swift 5.0으로 표시되어 있습니다. Xcode 16.0은 Swift 5.9 이상과 함께 제공되고, iOS 17.0 지원에는 최소 Swift 5.8이 필요합니다. 뱃지를 Swift 5.9로 업데이트하거나 최소 Swift 5.8 이상으로 변경해야 합니다.
🧰 Tools
🪛 markdownlint-cli2 (0.18.1)
4-4: Images should have alternate text (alt text)
(MD045, no-alt-text)
🤖 Prompt for AI Agents