Skip to content

Latest commit

ย 

History

558 Commits

Folders and files

NameName
Last commit message
Last commit date
ย 
ย 
ย 
ย 
ย 
ย 
ย 
ย 
ย 
ย 
ย 
ย 
ย 
ย 
ย 
ย 
ย 
ย 
ย 
ย 
ย 
ย 
ย 
ย 
ย 
ย 
ย 
ย 

Repository files navigation

MODY

์นœ๊ตฌ์™€ ํ•จ๊ป˜ ๋งŒ๋“œ๋Š” ๋‹ค์ด์–ดํŠธ ์Šต๊ด€

MODY๋Š” ํ˜ผ์ž ์ง€์†ํ•˜๊ธฐ ์–ด๋ ค์šด ๋‹ค์ด์–ดํŠธ๋ฅผ ์นœ๊ตฌ์™€ ํ•จ๊ป˜ ๊ธฐ๋กํ•˜๊ณ  ๊ณต์œ ํ•˜๋Š” ์†Œ์…œ ๋‹ค์ด์–ดํŠธ ์„œ๋น„์Šค์ž…๋‹ˆ๋‹ค. ๊ทธ๋ฃน์— ์ฐธ์—ฌํ•ด ์‹์‚ฌ์™€ ์šด๋™์„ ์‚ฌ์ง„์œผ๋กœ ๊ธฐ๋กํ•˜๊ณ , ๊ทธ๋ฃน ํ”ผ๋“œ์™€ ์ฃผ๊ฐ„ ํ™œ๋™์„ ํ†ตํ•ด ์„œ๋กœ์˜ ์Šต๊ด€์„ ํ™•์ธํ•  ์ˆ˜ ์žˆ์Šต๋‹ˆ๋‹ค.

๊ทธ๋ฃน๊ณผ ๊ธฐ๋ก ๊ฒฝํ—˜์„ ์ค‘์‹ฌ์œผ๋กœ ์ฑŒ๋ฆฐ์ง€, ๊ฑด๊ฐ• ๋ฐ์ดํ„ฐ ์—ฐ๋™, ์†Œ์…œ ๊ธฐ๋Šฅ์„ ํ•จ๊ป˜ ์ œ๊ณตํ•ฉ๋‹ˆ๋‹ค.

Release

Tech Stack

Category Stack
Language Swift
UI UIKit, SwiftUI
Architecture Micro Feature Architecture, Clean Architecture
State Management TCA, ReactorKit
Reactive RxSwift, RxCocoa, RxRelay
Networking Alamofire
Dependency Injection Swinject
Layout SnapKit
Image Nuke
Service Firebase, Kakao SDK
Project Generation Tuist
Test XCTest
CI/CD GitHub Actions, Fastlane

Features

  • KakaoยทApple ๋กœ๊ทธ์ธ ๋ฐ ์˜จ๋ณด๋”ฉ
  • ๊ทธ๋ฃน ์ƒ์„ฑยท์ฐธ์—ฌยท์ดˆ๋Œ€ยท๊ด€๋ฆฌ
  • ์‹์‚ฌยท์šด๋™ ์‚ฌ์ง„ ๊ธฐ๋ก
  • ๊ทธ๋ฃน ํ”ผ๋“œ ๋ฐ ์ฃผ๊ฐ„ ํ™œ๋™ ํ™•์ธ
  • ํ”„๋กœํ•„ ๋ฐ ์ฒด์ค‘ ๊ด€๋ฆฌ
  • ์‹์‚ฌยท์šด๋™ ๋ฆฌ๋งˆ์ธ๋”์™€ ๊ธฐ๋ณธ ์•Œ๋ฆผ
  • ๊ทธ๋ฃน ์ฑŒ๋ฆฐ์ง€
  • ๊ฑด๊ฐ• ๋ฐ์ดํ„ฐ ์—ฐ๋™
  • ๋Œ“๊ธ€ ๋ฐ ์ฝ• ์ฐŒ๋ฅด๊ธฐ
  • ์ฑŒ๋ฆฐ์ง€ยท๋Œ“๊ธ€ ๊ด€๋ จ ์•Œ๋ฆผ
  • ๊ธฐ๋ก ์ƒ์„ธ ๋ฐ ์†Œ์…œ ์ƒํ˜ธ์ž‘์šฉ ํ™•์žฅ

Architecture

MODY๋Š” Toss์˜ Micro Feature Architecture๋ฅผ ์ฐธ๊ณ ํ•ด ๊ธฐ๋Šฅ๋ณ„ ๋ชจ๋“ˆ์„ ๊ตฌ์„ฑํ–ˆ์Šต๋‹ˆ๋‹ค. ๊ฐ ๊ธฐ๋Šฅ์˜ ๊ตฌํ˜„๊ณผ ์™ธ๋ถ€ ๊ณ„์•ฝ์„ ๋ถ„๋ฆฌํ•˜๊ณ , ๋ชจ๋“ˆ ๋‚ด๋ถ€์—์„œ๋„ Presentation, Domain, Data์˜ ์ฑ…์ž„๊ณผ ์˜์กด์„ฑ ๊ฒฝ๊ณ„๋ฅผ ๋ช…ํ™•ํžˆ ํ•˜๋Š” ๋ฐ ์ค‘์ ์„ ๋‘์—ˆ์Šต๋‹ˆ๋‹ค.

Project Structure

Projects
โ”œโ”€โ”€ App           # ์•ฑ ์ง„์ž…์ , Composition Root, DI
โ”œโ”€โ”€ Feature       # ์‚ฌ์šฉ์ž ๊ธฐ๋Šฅ ๋‹จ์œ„ Micro Feature
โ”œโ”€โ”€ Core          # Network, Auth, Camera, Notification, Image ๋“ฑ ๊ธฐ๋ฐ˜ ๊ธฐ๋Šฅ
โ”œโ”€โ”€ Domain        # ์—ฌ๋Ÿฌ ๋ชจ๋“ˆ์ด ๊ณต์œ ํ•˜๋Š” ๋„๋ฉ”์ธ ๋ชจ๋ธ๊ณผ ์ •์ฑ…
โ”œโ”€โ”€ DesignSystem  # ๊ณตํ†ต UI ์ปดํฌ๋„ŒํŠธ, ๋””์ž์ธ ํ† ํฐ, ๋ฆฌ์†Œ์Šค
โ””โ”€โ”€ Shared        # Logger, Utility ๋“ฑ ๊ณตํ†ต ๋„๊ตฌ

Micro Feature Targets

๊ธฐ๋Šฅ ๋ชจ๋“ˆ์€ ํ•„์š”์— ๋”ฐ๋ผ ์•„๋ž˜์™€ ๊ฐ™์€ ๋…๋ฆฝ ํƒ€๊นƒ์œผ๋กœ ๋ถ„๋ฆฌ๋ฉ๋‹ˆ๋‹ค.

Target Responsibility
Feature ๊ธฐ๋Šฅ์˜ ์‹ค์ œ ๊ตฌํ˜„
Interface ์™ธ๋ถ€์— ๊ณต๊ฐœํ•  ์ž…๋ ฅยท์ถœ๋ ฅ, Route
Testing ํ…Œ์ŠคํŠธ์—์„œ ์žฌ์‚ฌ์šฉํ•  ์ง€์› ์ฝ”๋“œ
Tests ๊ธฐ๋Šฅ ๋‹จ์œ„ ํ…Œ์ŠคํŠธ
Demo ๊ธฐ๋Šฅ์„ ๋…๋ฆฝ์ ์œผ๋กœ ์‹คํ–‰ํ•˜๊ณ  ํ™•์ธํ•˜๋Š” ๋ฐ๋ชจ ์•ฑ

Feature Layers

Feature
โ””โ”€โ”€ Sources
    โ”œโ”€โ”€ Presentation  # ํ™”๋ฉด, ์‚ฌ์šฉ์ž ์ด๋ฒคํŠธ, ์ƒํƒœ ํ‘œํ˜„
    โ”œโ”€โ”€ Domain        # ๋น„์ฆˆ๋‹ˆ์Šค ๊ทœ์น™, UseCase, Repository ๊ณ„์•ฝ
    โ”œโ”€โ”€ Data          # API, DTO, Repository ๊ตฌํ˜„
    โ””โ”€โ”€ Builder       # ๊ธฐ๋Šฅ ์ƒ์„ฑ๊ณผ ์˜์กด์„ฑ ์กฐ๋ฆฝ
  • SwiftUI ๊ธฐ๋ฐ˜ ๊ธฐ๋Šฅ์€ ์ฃผ๋กœ TCA๋กœ ์ƒํƒœ์™€ Effect๋ฅผ ๊ด€๋ฆฌํ•ฉ๋‹ˆ๋‹ค.
  • UIKit ๊ธฐ๋ฐ˜ ํ™”๋ฉด์€ Coordinator๋กœ ํ™”๋ฉด ์ „ํ™˜ ์ฑ…์ž„์„ ๋ถ„๋ฆฌํ•˜๊ณ , ์ผ๋ถ€ ๊ธฐ๋Šฅ์—์„œ ReactorKit๊ณผ RxSwift๋ฅผ ์‚ฌ์šฉํ•ฉ๋‹ˆ๋‹ค.
  • ๊ธฐ๋Šฅ ์™ธ๋ถ€์—์„œ๋Š” ๊ตฌํ˜„ ํƒ€๊นƒ๋ณด๋‹ค Interface์— ์˜์กดํ•˜๋„๋ก ๊ตฌ์„ฑํ•ด ๋ชจ๋“ˆ ๊ฐ„ ๊ฒฐํ•ฉ๋„๋ฅผ ๋‚ฎ์ท„์Šต๋‹ˆ๋‹ค.

Environment

DEV์™€ PROD ํ™˜๊ฒฝ์„ ๋ถ„๋ฆฌํ•ฉ๋‹ˆ๋‹ค.

Environment Purpose
DEV ๊ฐœ๋ฐœ ๋ฐ ๋‚ด๋ถ€ ๊ฒ€์ฆ
PROD ์šด์˜ ๋ฐฐํฌ

ํ™˜๊ฒฝ๋ณ„ Bundle Identifier, API Base URL, Firebase ์„ค์ •, Kakao App Key๋ฅผ ๋ณ„๋„๋กœ ๊ด€๋ฆฌํ•ด ๋นŒ๋“œ ์„ค์ •์ด ์„œ๋กœ ์„ž์ด์ง€ ์•Š๋„๋ก ๊ตฌ์„ฑํ–ˆ์Šต๋‹ˆ๋‹ค.

CI/CD

GitHub Actions์™€ Fastlane์„ ์ด์šฉํ•ด ํƒœ๊ทธ ๊ธฐ๋ฐ˜ ๋นŒ๋“œ ๋ฐ ๋ฐฐํฌ ํŒŒ์ดํ”„๋ผ์ธ์„ ๊ตฌ์„ฑํ–ˆ์Šต๋‹ˆ๋‹ค.

  • dev/**, prod/**: DEVยทPROD ์•ฑ์„ ๋นŒ๋“œํ•ด TestFlight๋กœ ๋ฐฐํฌ
  • demo/**, design/**: FeatureยทDesignSystem ๋ฐ๋ชจ ์•ฑ์„ ๋นŒ๋“œํ•ด Firebase App Distribution์œผ๋กœ ๋ฐฐํฌ
  • ๋ฐฐํฌ ํƒœ๊ทธ ๊ฒ€์ฆ, ํ™˜๊ฒฝ ์„ค์ •, Firebase ์„ค์ •, Tuist ๋ฐ Ruby ํ™˜๊ฒฝ ๊ตฌ์„ฑ ์ž๋™ํ™”
  • ์ธ์ฆ์„œ์™€ Provisioning Profile ์„ค์น˜, ๋นŒ๋“œ ๋ฒˆํ˜ธ ๊ด€๋ฆฌ, ์•ฑ ๋นŒ๋“œ ๋ฐ ์—…๋กœ๋“œ ์ž๋™ํ™”
  • ํŒŒ์ดํ”„๋ผ์ธ ์‹œ์ž‘ยท์„ฑ๊ณตยท์‹คํŒจ ๊ฒฐ๊ณผ๋ฅผ Slack์œผ๋กœ ์•Œ๋ฆผ

Testing

Tests์™€ Testing ํƒ€๊นƒ ๊ตฌ์กฐ๋ฅผ ๊ฐ–์ถ”๊ณ  ์žˆ์Šต๋‹ˆ๋‹ค. 1.1.0๊นŒ์ง€๋Š” ๊ธฐ๋Šฅ ๊ฐœ๋ฐœ์— ์ง‘์ค‘ํ–ˆ์œผ๋ฉฐ, ๋‹จ์œ„ ํ…Œ์ŠคํŠธ์™€ ํ…Œ์ŠคํŠธ ์ง€์› ์ฝ”๋“œ๋Š” ์ถ”ํ›„ ๋ณด๊ฐ•ํ•  ์˜ˆ์ •์ž…๋‹ˆ๋‹ค.

About

๐Ÿ† CMC 19th ๋Œ€์ƒ | ์นœ๊ตฌ์™€ ํ•จ๊ป˜ ๋งŒ๋“œ๋Š” ๋‹ค์ด์–ดํŠธ ์Šต๊ด€, MODY

Topics

Resources

Stars

1 star

Watchers

0 watching

Forks

Releases

Contributors

Languages