Skip to content

Latest commit

ย 

History

History
423 lines (322 loc) ยท 15.4 KB

File metadata and controls

423 lines (322 loc) ยท 15.4 KB

DDD ์ถœ์„ iOS

DDD Logo

DDD IT ๋™์•„๋ฆฌ๋ฅผ ์œ„ํ•œ ์ถœ์„ ๊ด€๋ฆฌ ์‹œ์Šคํ…œ

Platform Language iOS Xcode TCA Tuist Fastlane

๐Ÿ“ฑ App Store | ๐ŸŽฏ Features | ๐Ÿ— Architecture | ๐Ÿš€ Quick Start


๐Ÿ“– ํ”„๋กœ์ ํŠธ ์†Œ๊ฐœ

DDD ์ถœ์„์€ DDD IT ๋™์•„๋ฆฌ์˜ ์ถœ์„ ๊ด€๋ฆฌ๋ฅผ ํšจ์œจ์ ์œผ๋กœ ๋„์™€์ฃผ๋Š” iOS ์• ํ”Œ๋ฆฌ์ผ€์ด์…˜์ž…๋‹ˆ๋‹ค. ๊ฐ„๋‹จํ•˜๊ณ  ์ง๊ด€์ ํ•œ ์ธํ„ฐํŽ˜์ด์Šค๋กœ ๋™์•„๋ฆฌ์›๋“ค์˜ ์ถœ์„ ํ˜„ํ™ฉ์„ ๊ด€๋ฆฌํ•˜๊ณ , ๋™์•„๋ฆฌ ํ™œ๋™์„ ์ฒด๊ณ„ํ™”ํ•  ์ˆ˜ ์žˆ๋„๋ก ์ง€์›ํ•ฉ๋‹ˆ๋‹ค.

๐Ÿ’ก ์šฐ๋ฆฌ๋Š” ์™œ ์ด ์•ฑ์„ ๋งŒ๋“ค์—ˆ์„๊นŒ์š”? DDD IT ๋™์•„๋ฆฌ์˜ ์ถœ์„ ๊ด€๋ฆฌ๋ฅผ ์œ„ํ•œ ๋ฒˆ๊ฑฐ๋กœ์šด ๊ณผ์ •์„ ์ค„์ด๊ณ , ๊ฐœ๋ฐœ์ž๋“ค์ด ํ•™์Šต๊ณผ ๋„คํŠธ์›Œํ‚น์— ๋” ์ง‘์ค‘ํ•  ์ˆ˜ ์žˆ๋Š” ํ™˜๊ฒฝ์„ ๋งŒ๋“ค๊ณ ์ž ํ•ฉ๋‹ˆ๋‹ค.

๐Ÿ›  Setup

AI ๋„๊ตฌ ์—ฐ๋™

ํ”„๋กœ์ ํŠธ ๊ทœ์น™์€ AGENTS.md์— ์ •์˜๋˜์–ด ์žˆ์Šต๋‹ˆ๋‹ค. Claude Code ์‚ฌ์šฉ ์‹œ ์‹ฌ๋ณผ๋ฆญ ๋งํฌ๋ฅผ ์—ฐ๊ฒฐํ•˜์„ธ์š”.

ln -s AGENTS.md CLAUDE.md

๐Ÿ“ฑ ์Šคํฌ๋ฆฐ์ƒท

๋ฉ”์ธ ํ™”๋ฉด ๋กœ๊ทธ์ธ ์ถœ์„ ๊ด€๋ฆฌ
์ถœ์„ ๋ฉค๋ฒ„ ํ”„๋กœํ•„ ์ผ์ •

โœจ ์ฃผ์š” ๊ธฐ๋Šฅ

๐Ÿ” ๊ฐ„ํŽธํ•œ ์ธ์ฆ

  • Google OAuth 2.0: ๊ฐ„๋‹จํ•œ ๊ตฌ๊ธ€ ๊ณ„์ • ๋กœ๊ทธ์ธ
  • ์ž๋™ ๋กœ๊ทธ์ธ ์œ ์ง€: ์žฌ์‹คํ–‰ ์‹œ ์ž๋™ ์ธ์ฆ ์ƒํƒœ ์œ ์ง€
  • ๋ณด์•ˆ ๊ฐ•ํ™”: OAuth 2.0 ๊ธฐ๋ฐ˜ ์•ˆ์ „ํ•œ ์ธ์ฆ ์‹œ์Šคํ…œ

๐Ÿ“Š ์ถœ์„ ๊ด€๋ฆฌ

  • ์‹ค์‹œ๊ฐ„ ์ถœ์„ ์ฒดํฌ: ๋น ๋ฅด๊ณ  ์ •ํ™•ํ•œ ์ถœ์„ ํ™•์ธ
  • ์ถœ์„ ์ƒํƒœ ๊ด€๋ฆฌ: ์ถœ์„, ์ง€๊ฐ, ๊ฒฐ์„, ๋Œ€๊ธฐ ์ƒํƒœ ๊ตฌ๋ถ„
  • ์ถœ์„ ์ด๋ ฅ ์กฐํšŒ: ๊ฐœ์ธ๋ณ„ ์ถœ์„ ํ˜„ํ™ฉ ๋ฐ ํ†ต๊ณ„
  • ์ถœ์„๋ฅ  ํ†ต๊ณ„: ์‹œ๊ฐ์  ํ†ต๊ณ„ ์ •๋ณด ์ œ๊ณต

๐Ÿ‘ฅ ๋ฉค๋ฒ„ ๊ด€๋ฆฌ

  • ์Šคํ„ฐ๋”” ๋ฉค๋ฒ„ ๋ชฉ๋ก: ์ „์ฒด ์ฐธ๊ฐ€์ž ํ˜„ํ™ฉ ํ™•์ธ
  • ๋ฉค๋ฒ„ ์ƒํƒœ ์กฐํšŒ: ๊ฐ ๋ฉค๋ฒ„์˜ ์ถœ์„ ํŒจํ„ด ๋ถ„์„
  • ๊ด€๋ฆฌ์ž ๊ถŒํ•œ: ์Šคํ„ฐ๋”” ์šด์˜์ง„์„ ์œ„ํ•œ ๊ด€๋ฆฌ ๊ธฐ๋Šฅ

๐Ÿ“ฑ ์‚ฌ์šฉ์ž ๊ฒฝํ—˜

  • ์ง๊ด€์  UI/UX: ๊ฐ„๋‹จํ•˜๊ณ  ๋ช…ํ™•ํ•œ ์ธํ„ฐํŽ˜์ด์Šค
  • ์‹ค์‹œ๊ฐ„ ๋™๊ธฐํ™”: ์„œ๋ฒ„์™€์˜ ์‹ค์‹œ๊ฐ„ ๋ฐ์ดํ„ฐ ๋™๊ธฐํ™”
  • ์˜คํ”„๋ผ์ธ ์ง€์›: ๋„คํŠธ์›Œํฌ ์—†์ด๋„ ๊ธฐ๋ณธ ๊ธฐ๋Šฅ ์‚ฌ์šฉ ๊ฐ€๋Šฅ
  • ๋‹คํฌ ๋ชจ๋“œ: ์‹œ์Šคํ…œ ์„ค์ •์— ๋”ฐ๋ฅธ ๋‹คํฌ/๋ผ์ดํŠธ ๋ชจ๋“œ ์ง€์›

๐Ÿ— ํ”„๋กœ์ ํŠธ ์•„ํ‚คํ…์ฒ˜

๐ŸŽฏ Clean Architecture with Tuist

DDD-Attendance-iOS/
โ”œโ”€โ”€ ๐Ÿ“ฑ Projects/
โ”‚   โ”œโ”€โ”€ App/                     # ๋ฉ”์ธ ์• ํ”Œ๋ฆฌ์ผ€์ด์…˜ ํƒ€๊ฒŸ
โ”‚   โ”‚   โ”œโ”€โ”€ Sources/
โ”‚   โ”‚   โ”‚   โ”œโ”€โ”€ Application/     # AppDelegate, SceneDelegate
โ”‚   โ”‚   โ”‚   โ”œโ”€โ”€ Di/             # Dependency Injection
โ”‚   โ”‚   โ”‚   โ”œโ”€โ”€ Reducer/        # TCA Root Reducer
โ”‚   โ”‚   โ”‚   โ””โ”€โ”€ View/           # Root Views
โ”‚   โ”‚   โ”œโ”€โ”€ Resources/          # Assets, Fonts, Localizations
โ”‚   โ”‚   โ””โ”€โ”€ Tests/              # App ๋ ˆ๋ฒจ ํ…Œ์ŠคํŠธ
โ”‚   โ”‚
โ”‚   โ”œโ”€โ”€ Presentation/           # ๐ŸŽจ UI Layer
โ”‚   โ”‚   โ”œโ”€โ”€ Auth/               # ๋กœ๊ทธ์ธ/์ธ์ฆ ํ™”๋ฉด
โ”‚   โ”‚   โ”œโ”€โ”€ Splash/             # ์Šคํ”Œ๋ž˜์‹œ ํ™”๋ฉด
โ”‚   โ”‚   โ”œโ”€โ”€ OnBoarding/         # ์˜จ๋ณด๋”ฉ ํ™”๋ฉด
โ”‚   โ”‚   โ”œโ”€โ”€ Management/         # ์ถœ์„ ๊ด€๋ฆฌ ํ™”๋ฉด
โ”‚   โ”‚   โ”œโ”€โ”€ Member/             # ๋ฉค๋ฒ„ ๊ด€๋ฆฌ ํ™”๋ฉด
โ”‚   โ”‚   โ”œโ”€โ”€ Profile/            # ํ”„๋กœํ•„ ํ™”๋ฉด
โ”‚   โ”‚   โ”œโ”€โ”€ Web/                # ์›น๋ทฐ ํ™”๋ฉด
โ”‚   โ”‚   โ””โ”€โ”€ Presentation/       # ๊ณตํ†ต ํ”„๋ ˆ์  ํ…Œ์ด์…˜ ์œ ํ‹ธ
โ”‚   โ”‚
โ”‚   โ”œโ”€โ”€ Domain/                 # ๐Ÿ”ฅ Business Logic Layer
โ”‚   โ”‚   โ”œโ”€โ”€ Entity/             # ๋„๋ฉ”์ธ ์—”ํ‹ฐํ‹ฐ
โ”‚   โ”‚   โ”œโ”€โ”€ UseCase/            # ๋น„์ฆˆ๋‹ˆ์Šค ๋กœ์ง ๊ตฌํ˜„
โ”‚   โ”‚   โ””โ”€โ”€ RepositoryInterface/ # Repository ํ”„๋กœํ† ์ฝœ
โ”‚   โ”‚
โ”‚   โ”œโ”€โ”€ Data/                   # ๐Ÿ“ก Data Layer
โ”‚   โ”‚   โ”œโ”€โ”€ Repository/         # Repository ๊ตฌํ˜„์ฒด
โ”‚   โ”‚   โ”œโ”€โ”€ DataSource/         # ๋กœ์ปฌ/์›๊ฒฉ ๋ฐ์ดํ„ฐ์†Œ์Šค
โ”‚   โ”‚   โ””โ”€โ”€ Model/              # DTO, Response Models
โ”‚   โ”‚
โ”‚   โ”œโ”€โ”€ Network/                # ๐ŸŒ Network Layer
โ”‚   โ”‚   โ”œโ”€โ”€ Foundation/         # ๋„คํŠธ์›Œํฌ ๊ธฐ๋ฐ˜ ์„ค์ •
โ”‚   โ”‚   โ”œโ”€โ”€ Service/            # API ์„œ๋น„์Šค ๊ตฌํ˜„
โ”‚   โ”‚   โ””โ”€โ”€ Configuration/      # ๋„คํŠธ์›Œํฌ ์„ค์ •
โ”‚   โ”‚
โ”‚   โ””โ”€โ”€ Shared/                 # ๐Ÿ”ง Shared Layer
โ”‚       โ”œโ”€โ”€ DesignSystem/       # ๋””์ž์ธ ์‹œ์Šคํ…œ
โ”‚       โ”œโ”€โ”€ Utility/            # ๊ณตํ†ต ์œ ํ‹ธ๋ฆฌํ‹ฐ
โ”‚       โ””โ”€โ”€ Extension/          # Swift Extensions
โ”‚
โ””โ”€โ”€ ๐Ÿ”ง Tuist/                   # ํ”„๋กœ์ ํŠธ ์„ค์ •
    โ”œโ”€โ”€ Package.swift
    โ”œโ”€โ”€ ProjectDescriptionHelpers/
    โ””โ”€โ”€ Dependencies.swift

๐Ÿ›๏ธ Clean Architecture Pattern

graph TD
    A[๐ŸŽจ Presentation Layer] --> B[๐Ÿ”ฅ Domain Layer]
    B --> C[๐Ÿ“ก Data Layer]
    D[๐ŸŒ Network Layer] --> C
    E[๐Ÿ”ง Shared Layer] --> A
    E --> B
    E --> C

    A -.-> F[SwiftUI Views]
    A -.-> G[TCA Reducers]
    B -.-> H[Use Cases]
    B -.-> I[Entities]
    C -.-> J[Repositories]
    C -.-> K[API Services]
Loading

๐Ÿ“Š ์˜์กด์„ฑ ๊ทธ๋ž˜ํ”„ (Tuist Graph)

Dependency Graph

ํ”„๋กœ์ ํŠธ ๋ชจ๋“ˆ ๊ฐ„ ์˜์กด์„ฑ ๊ด€๊ณ„๋„ (์ž๋™ ์ƒ์„ฑ)

๐Ÿ”„ ์˜์กด์„ฑ ๋ฐฉํ–ฅ ์›์น™

Presentation โ†’ Domain (UseCase Protocol)
       โ†“
Domain/UseCase โ†’ Domain (Repository Protocol)
       โ†“
Data/Repository โ†’ Domain (Entity + Repository Protocol)
       โ†“
Network/Service โ†’ Data (API ํ†ต์‹ )

ํ•ต์‹ฌ ์„ค๊ณ„ ์›์น™:

  • โœ… Presentation์€ Domain์˜ UseCase๋งŒ ์˜์กด
  • โœ… Domain์€ ์™ธ๋ถ€ ๊ณ„์ธต์— ์˜์กดํ•˜์ง€ ์•Š๋Š” ์ˆœ์ˆ˜ ๋น„์ฆˆ๋‹ˆ์Šค ๋กœ์ง
  • โœ… Data๋Š” Domain์˜ Entity์™€ Repository Protocol์„ ๊ตฌํ˜„
  • โœ… ๋ชจ๋“  ๋ฐ์ดํ„ฐ ํ๋ฆ„์€ Domain์„ ์ค‘์‹ฌ์œผ๋กœ ์ง„ํ–‰

๐Ÿ“š ๊ฐœ๋ฐœ ๊ฐ€์ด๋“œ ๋ฌธ์„œ

ํ”„๋กœ์ ํŠธ์˜ ์ƒ์„ธํ•œ ๊ฐœ๋ฐœ ๊ฐ€์ด๋“œ๋ผ์ธ์€ docs/ ํด๋”์˜ ๋ฌธ์„œ๋“ค์„ ์ฐธ๊ณ ํ•˜์„ธ์š”:

๐Ÿ—๏ธ ์•„ํ‚คํ…์ฒ˜ & ํŒจํ„ด

๐ŸŽจ UI & UX ์‹œ์Šคํ…œ

๐Ÿš€ ์„ฑ๋Šฅ & ์ตœ์ ํ™”

๐Ÿ› ๏ธ ๊ฐœ๋ฐœ ํ™˜๊ฒฝ & ํ˜‘์—…

๐Ÿ’ก ์ฐธ๊ณ : ์ด ๊ฐ€์ด๋“œ ๋ฌธ์„œ๋“ค์€ AI ์—์ด์ „ํŠธ๋“ค๋„ ์ฐธ์กฐํ•˜์—ฌ ํ”„๋กœ์ ํŠธ์˜ ์ผ๊ด€์„ฑ ์žˆ๋Š” ์ฝ”๋“œ ํ’ˆ์งˆ์„ ์œ ์ง€ํ•ฉ๋‹ˆ๋‹ค.

๐Ÿ›  ๊ธฐ์ˆ  ์Šคํƒ

Core Technologies

  • ๐ŸŽฏ Architecture: The Composable Architecture (TCA) 1.25.5
  • ๐Ÿ“ฆ Modularization: Tuist 4.x (Micro Feature Architecture)
  • ๐Ÿ’‰ Dependency Injection: WeaveDI 3.4.0
  • ๐Ÿ”€ Navigation: TCAFlow 1.1.0 (์ปค์Šคํ…€ ๋ผ์ด๋ธŒ๋Ÿฌ๋ฆฌ)
  • โšก Concurrency: Swift Concurrency (async/await)

๐Ÿ“š ์ฃผ์š” ๋ผ์ด๋ธŒ๋Ÿฌ๋ฆฌ

๐ŸŽฏ ์•„ํ‚คํ…์ฒ˜ & ์ƒํƒœ ๊ด€๋ฆฌ

  • ComposableArchitecture 1.25.5 - ๋‹จ๋ฐฉํ–ฅ ๋ฐ์ดํ„ฐ ํ”Œ๋กœ์šฐ ๋ฐ ์ƒํƒœ ๊ด€๋ฆฌ
  • TCAFlow 1.1.0 โญ๏ธ - TCA ๊ธฐ๋ฐ˜ ํ™”๋ฉด ์ „ํ™˜ ๋ฐ ๋„ค๋น„๊ฒŒ์ด์…˜ (์ปค์Šคํ…€)
  • WeaveDI 3.4.0 โญ๏ธ - ์˜์กด์„ฑ ์ฃผ์ž… ์ปจํ…Œ์ด๋„ˆ (์ปค์Šคํ…€ ํฌํฌ)

๐Ÿ” ์ธ์ฆ & ๋ณด์•ˆ

  • GoogleSignIn-iOS 9.0.0 - Google OAuth 2.0 ์ธ์ฆ
  • AppAuth-iOS 2.0.0 - OAuth 2.0 ๋ฐ OpenID Connect ํด๋ผ์ด์–ธํŠธ

๐ŸŒ ๋„คํŠธ์›Œํ‚น

  • AsyncMoya 1.1.8 โญ๏ธ - async/await ๊ธฐ๋ฐ˜ HTTP ํด๋ผ์ด์–ธํŠธ (์ปค์Šคํ…€)

๐ŸŽจ UI & UX

  • SwiftUIX 0.2.3 - SwiftUI ํ™•์žฅ ์ปดํฌ๋„ŒํŠธ
  • SDWebImageSwiftUI 2.0.0 - ๋น„๋™๊ธฐ ์ด๋ฏธ์ง€ ๋กœ๋”ฉ ๋ฐ ์บ์‹ฑ

๐Ÿ”ฅ ๋ฐฑ์—”๋“œ ์„œ๋น„์Šค

๐Ÿ›  ๊ฐœ๋ฐœ ๋„๊ตฌ & ์œ ํ‹ธ๋ฆฌํ‹ฐ

๐Ÿ“Š ๋กœ๊น… & ๋””๋ฒ„๊น…

  • LogMacro: ์ปค์Šคํ…€ ๋กœ๊น… ๋งคํฌ๋กœ
  • IssueReporting: ๊ฐœ๋ฐœ ๋‹จ๊ณ„ ์ด์Šˆ ์ถ”์ 
  • XCTestDynamicOverlay: ํ…Œ์ŠคํŠธ ํ™˜๊ฒฝ ์˜ค๋ฒ„๋ ˆ์ด

โšก ์„ฑ๋Šฅ & ๋™์‹œ์„ฑ

  • Clocks: ์‹œ๊ฐ„ ๊ด€๋ จ ์œ ํ‹ธ๋ฆฌํ‹ฐ
  • ConcurrencyExtras: Swift Concurrency ํ™•์žฅ
  • Swift 6.0: ์ตœ์‹  Swift ์–ธ์–ด ๊ธฐ๋Šฅ

๐Ÿ”ง ๋นŒ๋“œ & ๋ฐฐํฌ

  • Tuist: ํ”„๋กœ์ ํŠธ ์ƒ์„ฑ ๋ฐ ์˜์กด์„ฑ ๊ด€๋ฆฌ
  • Swift Package Manager (SPM): ํŒจํ‚ค์ง€ ์˜์กด์„ฑ ๊ด€๋ฆฌ
  • fastlane: ์ž๋™ํ™”๋œ ๋นŒ๋“œ ๋ฐ ๋ฐฐํฌ

๐Ÿ“ฑ ์ง€์› ํ™˜๊ฒฝ

  • ๐Ÿ’ป Xcode: 16.0 ์ด์ƒ
  • ๐Ÿ“ฑ iOS: 17.0 ์ด์ƒ
  • โšก Swift: 6.0 ์ด์ƒ
  • ๐Ÿ”ง Tuist: 4.x ์ด์ƒ

๐Ÿš€ ๋น ๋ฅธ ์‹œ์ž‘

โœ… ํ•„์ˆ˜ ์š”๊ตฌ์‚ฌํ•ญ

  • ๐Ÿ’ป Xcode: 16.0 ์ด์ƒ
  • ๐Ÿ“ฑ iOS: 17.0 ์ด์ƒ
  • โšก Swift: 6.0 ์ด์ƒ
  • ๐Ÿ”ง Tuist: 4.x ์ด์ƒ

๐Ÿ›  ์„ค์น˜ ๋ฐ ์‹คํ–‰

1๏ธโƒฃ ์ €์žฅ์†Œ ํด๋ก 

git clone https://github.com/DDD-Community/Attendance_iOS.git
cd Attendance_iOS

2๏ธโƒฃ Tuist ์„ค์น˜

curl -Ls https://install.tuist.io | bash

3๏ธโƒฃ ํ”„๋กœ์ ํŠธ ๋นŒ๋“œ ๋ฐ ์ƒ์„ฑ

# ์ „์ฒด ์›Œํฌํ”Œ๋กœ์šฐ (๊ถŒ์žฅ)
./make build      # clean โ†’ install โ†’ generate

# ๋˜๋Š” ๋‹จ๊ณ„๋ณ„ ์‹คํ–‰
./make clean      # ๊ธฐ์กด ํŒŒ์ผ ์ •๋ฆฌ
./make install    # ์˜์กด์„ฑ ์„ค์น˜
./make generate   # ํ”„๋กœ์ ํŠธ ์ƒ์„ฑ

4๏ธโƒฃ Xcode์—์„œ ์‹คํ–‰

open DDDAttendance.xcworkspace

โš™๏ธ ํ™˜๊ฒฝ ์„ค์ •

ํ”„๋กœ์ ํŠธ ์‹คํ–‰์„ ์œ„ํ•ด ๋‹ค์Œ ์„ค์ •์ด ํ•„์š”ํ•ฉ๋‹ˆ๋‹ค:

// Config ํŒŒ์ผ์—์„œ ์„ค์ • (Dev.xcconfig, Prod.xcconfig)
BASE_URL = api.dddstudy.kr/
GOOGLE_CLIENT_ID = YOUR_GOOGLE_CLIENT_ID
GOOGLE_IOS_CLIENT_ID = YOUR_GOOGLE_IOS_CLIENT_ID
REVERSED_CLIENT_ID = YOUR_REVERSED_CLIENT_ID

๐Ÿ› ๏ธ ์ฃผ์š” ๋ช…๋ น์–ด

๐Ÿ”„ ๊ธฐ๋ณธ ์›Œํฌํ”Œ๋กœ์šฐ

./make build      # ์ „์ฒด ๋นŒ๋“œ ํ”„๋กœ์„ธ์Šค (๊ถŒ์žฅ)
./make generate   # ํ”„๋กœ์ ํŠธ ์ƒ์„ฑ๋งŒ
./make clean      # ๋นŒ๋“œ ์•„ํ‹ฐํŒฉํŠธ ์ •๋ฆฌ
./make install    # ์˜์กด์„ฑ ์„ค์น˜

๐Ÿšจ ๋ฌธ์ œ ํ•ด๊ฒฐ

tuist clean       # Tuist ์บ์‹œ ์ •๋ฆฌ
./make clean      # ๋ชจ๋“  ๋นŒ๋“œ ํŒŒ์ผ ์ •๋ฆฌ

๐Ÿ” ์ฝ”๋“œ ํ’ˆ์งˆ ๊ด€๋ฆฌ

tuist graph       # ์˜์กด์„ฑ ๊ทธ๋ž˜ํ”„ ์ƒ์„ฑ
tuist test        # ์ „์ฒด ํ…Œ์ŠคํŠธ ์‹คํ–‰

๐Ÿ“ฑ fastlane ์ž๋™ํ™”

fastlane ios beta               # TestFlight ๋ฐฐํฌ
fastlane ios release            # App Store ๋ฐฐํฌ
fastlane ios screenshots        # ์Šคํฌ๋ฆฐ์ƒท ์ž๋™ ์ƒ์„ฑ
fastlane ios build_for_testing  # ํ…Œ์ŠคํŠธ ๋นŒ๋“œ

fastlane ์ฃผ์š” ๊ธฐ๋Šฅ:

  • ์ž๋™ํ™”๋œ ๋นŒ๋“œ ๋ฐ ๋ฐฐํฌ
  • App Store Connect ๊ด€๋ฆฌ
  • ์ธ์ฆ์„œ ๋ฐ ํ”„๋กœํ•„ ๊ด€๋ฆฌ
  • ์Šคํฌ๋ฆฐ์ƒท ์ž๋™ ์ƒ์„ฑ

๐Ÿ“‹ ์‚ฌ์šฉ๋ฒ•

1๏ธโƒฃ ์ดˆ๊ธฐ ์„ค์ •

  1. ์•ฑ ๋‹ค์šด๋กœ๋“œ ๋ฐ ์„ค์น˜
  2. Google ๊ณ„์ •์œผ๋กœ ๋กœ๊ทธ์ธ
  3. ๊ถŒํ•œ ์„ค์ • (ํ‘ธ์‹œ ์•Œ๋ฆผ ๋“ฑ)

2๏ธโƒฃ ์ถœ์„ ์ฒดํฌ

  1. ์ถœ์„ ํƒญ์—์„œ ํ˜„์žฌ ์Šคํ„ฐ๋”” ์„ธ์…˜ ํ™•์ธ
  2. ์ถœ์„ ์ฒดํฌ ๋ฒ„ํŠผ ํ„ฐ์น˜
  3. ์ถœ์„ ์ƒํƒœ ์ž๋™ ์—…๋ฐ์ดํŠธ (์ถœ์„/์ง€๊ฐ/๊ฒฐ์„/๋Œ€๊ธฐ)

3๏ธโƒฃ ์ถœ์„ ํ˜„ํ™ฉ ์กฐํšŒ

  1. ํ†ต๊ณ„ ํƒญ์—์„œ ๊ฐœ์ธ ์ถœ์„๋ฅ  ํ™•์ธ
  2. ๋‹ฌ๋ ฅ ๋ทฐ๋กœ ์›”๋ณ„ ์ถœ์„ ํŒจํ„ด ํ™•์ธ
  3. ์ƒ์„ธ ์ด๋ ฅ ์กฐํšŒ ๊ฐ€๋Šฅ

4๏ธโƒฃ ํ”„๋กœํ•„ ๊ด€๋ฆฌ

  1. ํ”„๋กœํ•„ ํƒญ์—์„œ ๊ฐœ์ธ ์ •๋ณด ํ™•์ธ
  2. ์„ค์ • ๋ฉ”๋‰ด์—์„œ ์•ฑ ํ™˜๊ฒฝ ์„ค์ •
  3. ๋กœ๊ทธ์•„์›ƒ ๋ฐ ๊ณ„์ • ๊ด€๋ฆฌ

๐Ÿ“„ ๋ผ์ด์„ ์Šค

์ด ํ”„๋กœ์ ํŠธ๋Š” MIT ๋ผ์ด์„ ์Šค ํ•˜์— ๋ฐฐํฌ๋ฉ๋‹ˆ๋‹ค. ์ž์„ธํ•œ ๋‚ด์šฉ์€ LICENSE ํŒŒ์ผ์„ ์ฐธ๊ณ ํ•˜์„ธ์š”.

๐Ÿ‘ฅ ํŒ€ & ํฌ๋ ˆ๋”ง

๐Ÿ’ป ๊ฐœ๋ฐœํŒ€

  • iOS Lead Developer: ์„œ์›์ง€ (@Roy-wonji)
  • iOS Developer: ํ™์€ํ‘œ (@honghoker)

๐Ÿ›  ๊ธฐ์ˆ  ์Šคํƒ

  • iOS: Swift Xcode Fastlane

  • Server: AWS EC2 AWS Swagger

  • Design: Figma

  • VCS: Git GitHub

๐Ÿˆโ€โฌ› Git ๋ธŒ๋žœ์นญ ์ „๋žต

1๏ธโƒฃ Git Branching Strategy

  • Main Branch: ํ”„๋กœ๋•์…˜ ๋ฐฐํฌ์šฉ
  • Develop Branch: ๊ฐœ๋ฐœ ํ†ตํ•ฉ ๋ธŒ๋žœ์น˜
  • Feature Branch: ๊ธฐ๋Šฅ๋ณ„ ๊ฐœ๋ฐœ ๋ธŒ๋žœ์น˜

๐Ÿ“‹ ์›Œํฌํ”Œ๋กœ์šฐ

  1. Develop ๋ธŒ๋žœ์น˜์—์„œ Feature ๋ธŒ๋žœ์น˜ ์ƒ์„ฑ
  2. Feature ๋ธŒ๋žœ์น˜์—์„œ ๊ฐœ๋ฐœ ์ง„ํ–‰
  3. Feature โ†’ Develop Pull Request
  4. ์ฝ”๋“œ ๋ฆฌ๋ทฐ ๋ฐ ์ถฉ๋Œ ํ•ด๊ฒฐ ํ›„ ๋จธ์ง€
  5. Develop โ†’ Main ๋ฐฐํฌ์šฉ Pull Request

๐Ÿ“ž ๋ฌธ์˜ ๋ฐ ์ง€์›


Made with โค๏ธ by DDD Team

Star this repo