Skip to content

Juinjang/Juinjang_iOS

Folders and files

NameName
Last commit message
Last commit date

Latest commit

ย 
ย 
ย 
ย 
ย 
ย 
ย 
ย 
ย 

Repository files navigation

แ„Œแ…ฎแ„‹แ…ตแ†ซแ„Œแ…กแ†ผแ„‹แ…ขแ†ธแ„‹แ…กแ„‹แ…ตแ„แ…ฉแ†ซ ์ฃผ์ธ์žฅ iOS - ๋ถ€๋™์‚ฐ ๋งค๋ฌผ ๊ธฐ๋ก

แ„Šแ…ฅแ†ทแ„‚แ…ฆแ„‹แ…ตแ†ฏ

์ฃผ์ธ์žฅ์€ ๋ถ€๋™์‚ฐ ์ž„์žฅ ์ •๋ณด๋ฅผ ์‚ฌ์ง„, ์Œ์„ฑ, ์ฒดํฌ๋ฆฌ์ŠคํŠธ ๋“ฑ์œผ๋กœ ์†์‰ฝ๊ฒŒ ๊ธฐ๋กํ•˜๊ณ  ๊ด€๋ฆฌํ•  ์ˆ˜ ์žˆ๋Š” ์•ฑ์ž…๋‹ˆ๋‹ค. ์ž„์žฅ ์ ์ˆ˜ ๋น„๊ต์™€ ๊ธฐ๋ก ๊ณต์œ  ๊ธฐ๋Šฅ์„ ํ†ตํ•ด ๊ฐœ์ธ ๋ฉ”๋ชจ๋ฅผ ๋„˜์–ด ์ž„์žฅ ์ •๋ณด๋ฅผ ํ•จ๊ป˜ ๋‚˜๋ˆ„๋Š” ์ปค๋ฎค๋‹ˆํ‹ฐ๋ฅผ ์ œ๊ณตํ•ฉ๋‹ˆ๋‹ค.

๐Ÿ’ก ์ฃผ์ธ์žฅ์—์„œ ์ž„์žฅ์ด๋ž€?

์ง‘์„ ์ง์ ‘ ๋ณด๋Ÿฌ ๊ฐ€์„œ ์‚ฌ์ง„ ์ฐ๊ณ , ์ƒํƒœ ์ฒดํฌํ•˜๊ณ , ๋น„๊ตยท๊ธฐ๋กํ•˜๋Š” ํ™œ๋™


๐Ÿ“ข 2.0 ๋ฒ„์ „ ์ถœ์‹œ (2025.08) โ€” ๋Œ€๊ทœ๋ชจ UI ๊ฐœํŽธ๊ณผ ์‹ ๊ทœ ๊ธฐ๋Šฅ ์ถ”๊ฐ€
๐Ÿ‘‰ App Store์—์„œ ๋ฐ”๋กœ ๋ณด๊ธฐ


์ฃผ์ธ์žฅ TEAM

iOS 2๋ช…

๊น€๋™์šฐ ์กฐ์œ ์ง„

ornwoo96

yuzzin0121

Server 3๋ช…

Design 2๋ช…

PM 2๋ช…


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

์ž„์žฅ ํŽ˜์ด์ง€ ์ƒ์„ฑ ์‚ฌ์ง„, ๋…น์Œ, ๋ฉ”๋ชจ ์ถ”๊ฐ€ ๋งž์ถคํ˜• ์ฒดํฌ๋ฆฌ์ŠคํŠธ ์ž‘์„ฑ
์ž„์žฅ ์ •๋ณด ์ปค๋ฎค๋‹ˆํ‹ฐ ๊ณต์œ ๋œ ์ž„์žฅ ์ •๋ณด ์ƒ์„ธ๋ณด๊ธฐ ๋‚˜์˜ ์ž„์žฅ ์ •๋ณด ๊ณต์œ 

๊ฐœ๋ฐœ ํ™˜๊ฒฝ

  • Swift 5.0
  • iOS 16.0 +
  • Xcode 16.0.0

์‚ฌ์šฉ ๊ธฐ์ˆ  ๋ฐ ๋ผ์ด๋ธŒ๋Ÿฌ๋ฆฌ

  • UIKit SnapKit Then
  • ReactorKit RxSwift
  • Alamofire Firebase
  • Realm
  • Tuist

ํด๋” ๊ตฌ์กฐ

๐Ÿ“‚ Project
โ”œโ”€โ”€ ๐Ÿ“‚ juinjang : ์ฃผ์ธ์žฅ ๋ฉ”์ธ ๋ชจ๋“ˆ
โ”‚   โ””โ”€โ”€ ๐Ÿ“‚ Project
โ”‚       โ”œโ”€โ”€ ๐Ÿ“‚ Application : AppDelegate, SceneDelegate ๋“ฑ ์•ฑ ์ƒ๋ช…์ฃผ๊ธฐ ๊ด€๋ฆฌ
โ”‚       โ”œโ”€โ”€ ๐Ÿ“‚ Common : ๊ณตํ†ต์œผ๋กœ ์‚ฌ์šฉํ•˜๋Š” Enum, Extensions, Protocol
โ”‚       โ”œโ”€โ”€ ๐Ÿ“‚ Components : ์žฌ์‚ฌ์šฉ ๊ฐ€๋Šฅํ•œ View ์ปดํฌ๋„ŒํŠธ ๋ชจ์Œ
โ”‚       โ”œโ”€โ”€ ๐Ÿ“‚ Manager : ์ธ์•ฑ๊ฒฐ์ œ, ๋…น์Œยท์žฌ์ƒ, Firebase ์—ฐ๋™ ๋“ฑ ์ฃผ์š” ์„œ๋น„์Šค ๋กœ์ง ๊ด€๋ฆฌ
โ”‚       โ”œโ”€โ”€ ๐Ÿ“‚ Model : Request/Response ๊ตฌ์กฐ์ฒด (Decodable, Encodable)
โ”‚       โ”œโ”€โ”€ ๐Ÿ“‚ Network : ๋„คํŠธ์›Œํฌ ๊ด€๋ จ ํด๋ž˜์Šค (BaseURL, APIManager, NetworkMonitor, TargetType ๋“ฑ)
โ”‚       โ”œโ”€โ”€ ๐Ÿ“‚ Repository : ๋ ˆํฌ์ง€ํ† ๋ฆฌ ํŒจํ„ด ๊ธฐ๋ฐ˜ ๋ฐ์ดํ„ฐ ์ ‘๊ทผ ๊ณ„์ธต
โ”‚       โ”œโ”€โ”€ ๐Ÿ“‚ Storage : ๋กœ์ปฌ ๋ฐ์ดํ„ฐ ์ €์žฅ์†Œ (UserDefaultsManager ๋“ฑ)
โ”‚       โ””โ”€โ”€ ๐Ÿ“‚ UserInterface : UI Scene ๋ชจ์Œ
โ”‚           โ”œโ”€โ”€ ๐Ÿ“‚ View : ViewController, ๋ฉ”์ธ ๋ทฐ, ์„œ๋ธŒ๋ทฐ ๊ด€๋ฆฌ
โ”‚           โ””โ”€โ”€ ๐Ÿ“‚ Reactor : ReactorKit์—์„œ ์‚ฌ์šฉํ•˜๋Š” Reactor ํด๋ž˜์Šค
โ””โ”€โ”€ ๐Ÿ“‚ Core : ํ”„๋กœ์ ํŠธ ์ „๋ฐ˜์—์„œ ๊ณตํ†ต์ ์œผ๋กœ ์‚ฌ์šฉ๋˜๋Š” ํ•ต์‹ฌ ์œ ํ‹ธ๋ฆฌํ‹ฐ์™€ ์„œ๋น„์Šค ๋กœ์ง์„ ๋ชจ์•„๋‘” ๋ชจ๋“ˆ
    โ””โ”€โ”€ ๐Ÿ“‚ Project
        โ””โ”€โ”€ ๐Ÿ“‚ Common
            โ””โ”€โ”€ ๐Ÿ“‚ AnalyticsManager
                โ”œโ”€โ”€ AnalyticsEvent : ์•ฑ ๋‚ด ์ฃผ์š” ์ด๋ฒคํŠธ๋ฅผ ์ •์˜ํ•œ ์—ด๊ฑฐํ˜•/๊ตฌ์กฐ์ฒด. ํ™”๋ฉด ์ด๋™, ๋ฒ„ํŠผ ํด๋ฆญ, ๊ธฐ๋Šฅ ์‚ฌ์šฉ ๋“ฑ ๋ถ„์„ ๋Œ€์ƒ ์ด๋ฒคํŠธ์˜ ์‹๋ณ„์ž์™€ ์†์„ฑ์„ ๊ด€๋ฆฌ
                โ””โ”€โ”€ AnalyticsManager : Firebase Analytics, Amplitude ๋“ฑ ์™ธ๋ถ€ ๋ถ„์„ ๋„๊ตฌ์™€์˜ ์—ฐ๋™์„ ๋‹ด๋‹น. ์ด๋ฒคํŠธ ๋กœ๊น…, ์‚ฌ์šฉ์ž ์†์„ฑ ์„ค์ •, ์„ธ์…˜ ์ถ”์  ๋“ฑ์˜ ๊ธฐ๋Šฅ ์ œ๊ณต

์•„ํ‚คํ…์ฒ˜

ํ˜„์žฌ Tuist๋ฅผ ํ™œ์šฉํ•˜์—ฌ ๋ชจ๋“ˆ์„ ๋‚˜๋ˆ„๊ณ  ์žˆ์œผ๋ฉฐ, ์ดˆ๊ธฐ์—๋Š” Main๊ณผ Core 2๊ฐœ ๋ชจ๋“ˆ๋กœ ๊ตฌ์„ฑํ–ˆ์Šต๋‹ˆ๋‹ค. ์ถ”ํ›„ ์ด 6๊ฐœ(App, Data, Domain, Presentation, Core, DesignSystem) ๋ชจ๋“ˆ๋กœ ํ™•์žฅํ•  ์˜ˆ์ •์ด๋ฉฐ, ์ด๋Š” ํด๋ฆฐ ์•„ํ‚คํ…์ฒ˜ ์›์น™์„ ์ ์šฉํ•˜๊ธฐ ์œ„ํ•จ์ž…๋‹ˆ๋‹ค.

ํด๋ฆฐ ์•„ํ‚คํ…์ฒ˜ ๋„์ž… ์ด์œ 

  • ๊ด€์‹ฌ์‚ฌ ๋ถ„๋ฆฌ : UI, ๋น„์ฆˆ๋‹ˆ์Šค ๋กœ์ง, ๋ฐ์ดํ„ฐ ์ ‘๊ทผ ๊ณ„์ธต์„ ๋ช…ํ™•ํžˆ ๋ถ„๋ฆฌํ•˜์—ฌ ์œ ์ง€๋ณด์ˆ˜์„ฑ์„ ๋†’์ž„
  • ์˜์กด์„ฑ ๋ฐฉํ–ฅ ํ†ต์ œ : ํ•ต์‹ฌ ๋„๋ฉ”์ธ ๋กœ์ง์ด ์™ธ๋ถ€ ํ”„๋ ˆ์ž„์›Œํฌ๋‚˜ UI ๊ณ„์ธต์— ์˜์กดํ•˜์ง€ ์•Š๋„๋ก ์„ค๊ณ„
  • ํ…Œ์ŠคํŠธ ์šฉ์ด์„ฑ : ๋ชจ๋“ˆ๋ณ„ ๋‹จ์œ„ ํ…Œ์ŠคํŠธ์™€ ๋…๋ฆฝ์ ์ธ ๋ณ€๊ฒฝ ๊ฒ€์ฆ์ด ๊ฐ€๋Šฅ
  • ํ™•์žฅ์„ฑ ํ™•๋ณด : ๊ธฐ๋Šฅ ์ถ”๊ฐ€ยท๋ณ€๊ฒฝ ์‹œ ์˜ํ–ฅ์„ ์ตœ์†Œํ™”ํ•˜์—ฌ ์žฅ๊ธฐ์ ์œผ๋กœ ์•ˆ์ •์ ์ธ ํ”„๋กœ์ ํŠธ ์šด์˜ ๊ฐ€๋Šฅ

ReactorKit ๋„์ž… ์ด์œ 

  • ํ˜„์žฌ ์•ฑ ๊ตฌ์กฐ๋Š” ReactorKit์„ ์ค‘์‹ฌ์œผ๋กœ ๊ฐœํŽธ
  • ์ฑ„ํƒ ์ด์œ ๋Š” ์•ฑ ๋‚ด State ๊ด€๋ฆฌ์˜ ๋‹จ์ˆœ์„ฑ๊ณผ ๋‚ฎ์€ ๋Ÿฌ๋‹ ์ปค๋ธŒ

TCA ๋งˆ์ด๊ทธ๋ ˆ์ด์…˜

  • ๋‹ค๋งŒ, ReactorKit์˜ ์˜ค๋ž˜๋œ ์—…๋ฐ์ดํŠธ ์ค‘๋‹จ์œผ๋กœ ์ธํ•ด Swift ์ตœ์‹  ๋ฒ„์ „ ๋Œ€์‘๊ณผ SwiftUI ๋„์ž…์„ ๊ณ ๋ คํ•ด, TCA(The Composable Architecture) ๋กœ์˜ ์ „๋ฉด ๋งˆ์ด๊ทธ๋ ˆ์ด์…˜์„ ๊ณ„ํš ์ค‘
  • TCA๋Š” SwiftUI์™€์˜ ๋†’์€ ํ˜ธํ™˜์„ฑ๊ณผ ์ผ๊ด€๋œ ์ƒํƒœ ๊ด€๋ฆฌ ํŒจํ„ด์„ ์ œ๊ณตํ•ด, ์žฅ๊ธฐ ์œ ์ง€๋ณด์ˆ˜์— ์œ ๋ฆฌํ•˜๋‹ค๊ณ  ํŒ๋‹จ

๐Ÿ”— App Store

Download on the App Store


WiKi ๋ฐ”๋กœ๊ฐ€๊ธฐ

โ˜๏ธ ์ด ์™ธ์— ๊ถ๊ธˆํ•œ์ (์ฃผ์ธ์žฅ ์ปจ๋ฒค์…˜, Swift Style Guide)์ด ์žˆ๋‹ค๋ฉด ํด๋ฆญํ•ด์ฃผ์„ธ์š”.


๐Ÿ”— ์ถ”๊ฐ€ ๋งํฌ