์ฃผ์ธ์ฅ์ ๋ถ๋์ฐ ์์ฅ ์ ๋ณด๋ฅผ ์ฌ์ง, ์์ฑ, ์ฒดํฌ๋ฆฌ์คํธ ๋ฑ์ผ๋ก ์์ฝ๊ฒ ๊ธฐ๋กํ๊ณ ๊ด๋ฆฌํ ์ ์๋ ์ฑ์ ๋๋ค. ์์ฅ ์ ์ ๋น๊ต์ ๊ธฐ๋ก ๊ณต์ ๊ธฐ๋ฅ์ ํตํด ๊ฐ์ธ ๋ฉ๋ชจ๋ฅผ ๋์ด ์์ฅ ์ ๋ณด๋ฅผ ํจ๊ป ๋๋๋ ์ปค๋ฎค๋ํฐ๋ฅผ ์ ๊ณตํฉ๋๋ค.
์ง์ ์ง์ ๋ณด๋ฌ ๊ฐ์ ์ฌ์ง ์ฐ๊ณ , ์ํ ์ฒดํฌํ๊ณ , ๋น๊ตยท๊ธฐ๋กํ๋ ํ๋
๐ข 2.0 ๋ฒ์ ์ถ์ (2025.08) โ ๋๊ท๋ชจ UI ๊ฐํธ๊ณผ ์ ๊ท ๊ธฐ๋ฅ ์ถ๊ฐ
๐ App Store์์ ๋ฐ๋ก ๋ณด๊ธฐ
| ๊น๋์ฐ | ์กฐ์ ์ง |
|---|---|
![]() ornwoo96 |
yuzzin0121 |
| ์์ฅ ํ์ด์ง ์์ฑ | ์ฌ์ง, ๋ น์, ๋ฉ๋ชจ ์ถ๊ฐ | ๋ง์ถคํ ์ฒดํฌ๋ฆฌ์คํธ ์์ฑ |
|---|---|---|
![]() |
![]() |
![]() |
| ์์ฅ ์ ๋ณด ์ปค๋ฎค๋ํฐ | ๊ณต์ ๋ ์์ฅ ์ ๋ณด ์์ธ๋ณด๊ธฐ | ๋์ ์์ฅ ์ ๋ณด ๊ณต์ |
|---|---|---|
![]() |
![]() |
![]() |
- Swift 5.0
- iOS 16.0 +
- Xcode 16.0.0
UIKitSnapKitThenReactorKitRxSwiftAlamofireFirebaseRealmTuist
๐ 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์ ์ค์ฌ์ผ๋ก ๊ฐํธ
- ์ฑํ ์ด์ ๋ ์ฑ ๋ด State ๊ด๋ฆฌ์ ๋จ์์ฑ๊ณผ ๋ฎ์ ๋ฌ๋ ์ปค๋ธ
- ๋ค๋ง, ReactorKit์ ์ค๋๋ ์ ๋ฐ์ดํธ ์ค๋จ์ผ๋ก ์ธํด Swift ์ต์ ๋ฒ์ ๋์๊ณผ SwiftUI ๋์ ์ ๊ณ ๋ คํด, TCA(The Composable Architecture) ๋ก์ ์ ๋ฉด ๋ง์ด๊ทธ๋ ์ด์ ์ ๊ณํ ์ค
- TCA๋ SwiftUI์์ ๋์ ํธํ์ฑ๊ณผ ์ผ๊ด๋ ์ํ ๊ด๋ฆฌ ํจํด์ ์ ๊ณตํด, ์ฅ๊ธฐ ์ ์ง๋ณด์์ ์ ๋ฆฌํ๋ค๊ณ ํ๋จ
โ๏ธ ์ด ์ธ์ ๊ถ๊ธํ์ (์ฃผ์ธ์ฅ ์ปจ๋ฒค์ , Swift Style Guide)์ด ์๋ค๋ฉด ํด๋ฆญํด์ฃผ์ธ์.






