Skip to content
/ iOS Public

๐Ÿ›๏ธ ํฉ์–ด์ ธ ์žˆ๋Š” ํŒ์—…์Šคํ† ์–ด ์ •๋ณด๋ฅผ ํ•œ๊ณณ์—์„œ ํ™•์ธํ•˜์„ธ์š”!

Notifications You must be signed in to change notification settings

PopPool/iOS

Folders and files

NameName
Last commit message
Last commit date

Latest commit

ย 
ย 
ย 
ย 
ย 
ย 
ย 
ย 
ย 
ย 
ย 

Repository files navigation

Poppool

Poppool hero



ํฉ์–ด์ ธ ์žˆ๋Š” ํŒ์—…์Šคํ† ์–ด ์ •๋ณด๋ฅผ ๋ชจ์•„ ์ง€๋„์™€ ๊ฒ€์ƒ‰, ๊ทธ๋ฆฌ๊ณ  ์ปค๋ฎค๋‹ˆํ‹ฐ ๊ธฐ๋Šฅ์œผ๋กœ ์ œ๊ณตํ•˜๋Š” iOS ์• ํ”Œ๋ฆฌ์ผ€์ด์…˜์ž…๋‹ˆ๋‹ค.


๋ชฉ์ฐจ

  1. ํ”„๋กœ์ ํŠธ ํ•œ๋ˆˆ์— ๋ณด๊ธฐ
  2. ์ฃผ์š” ๊ธฐ๋Šฅ
  3. ์•„ํ‚คํ…์ฒ˜
  4. ๋ชจ๋“ˆ ๊ตฌ์„ฑ
  5. ๊ธฐ์ˆ  ์Šคํƒ
  6. ์‹œ์ž‘ํ•˜๊ธฐ
  7. ํ˜‘์—… ๊ทœ์น™

ํ”„๋กœ์ ํŠธ ํ•œ๋ˆˆ์— ๋ณด๊ธฐ

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

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

1. ์ง€๋„ ํƒ์ƒ‰

  • ๋„ค์ด๋ฒ„ ์ง€๋„ SDK(NMapsMap)๋ฅผ ์—ฐ๋™ํ•˜์—ฌ ์‹ค์‹œ๊ฐ„ ์œ„์น˜, ๋งˆ์ปค ํด๋Ÿฌ์Šคํ„ฐ๋ง, ์นดํ…Œ๊ณ ๋ฆฌ ๊ธฐ๋ฐ˜ ํ•„ํ„ฐ๋ฅผ ์ œ๊ณตํ•˜๊ณ , ํŒ์—… ์ƒ์„ธ ์ •๋ณด๋ฅผ ์บ๋Ÿฌ์…€๋กœ ๋…ธ์ถœํ•ฉ๋‹ˆ๋‹ค.
  • ์ง€๋„ ์˜์—ญ ์ด๋™ ์‹œ ViewPort์— ๋งž์ถ˜ ์Šคํ† ์–ด ๋ฐ์ดํ„ฐ๋ฅผ ๊ฐ€์ ธ์˜ค๊ณ , ์„ ํƒํ•œ ๋งˆ์ปค์— ๋Œ€ํ•œ ์ƒ์„ธ ํ™”๋ฉด์œผ๋กœ ๋„ค๋น„๊ฒŒ์ด์…˜ํ•ฉ๋‹ˆ๋‹ค.

2. ํŒ์—… ๊ฒ€์ƒ‰ ๋ฐ ํ•„ํ„ฐ๋ง

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

3. ๋„๋ฉ”์ธ ๋กœ์ง๊ณผ ๋ฐ์ดํ„ฐ ์ ‘๊ทผ

  • ์ง€๋„ ๊ด€๋ จ ์œ ์Šค์ผ€์ด์Šค๋Š” ์„ ํƒํ•œ ์นดํ…Œ๊ณ ๋ฆฌ์™€ ์ง€๋„ ์˜์—ญ์„ ๋ฐ›์•„ ์ €์žฅ์†Œ์—์„œ ๋ฐ์ดํ„ฐ๋ฅผ ๊ฐ€์ ธ์˜ค๋ฉฐ, ์œ„์น˜ ๊ธฐ๋ฐ˜ ํ•„ํ„ฐ๋ง ๋กœ์ง์„ ์ œ๊ณตํ•ฉ๋‹ˆ๋‹ค.
  • ๋ฐ์ดํ„ฐ ๋ ˆ์ด์–ด๋Š” Alamofire Provider๋ฅผ ํ†ตํ•ด API๋ฅผ ํ˜ธ์ถœํ•˜๊ณ , ์‘๋‹ต DTO๋ฅผ ๋„๋ฉ”์ธ ๋ชจ๋ธ๋กœ ๋ณ€ํ™˜ํ•ฉ๋‹ˆ๋‹ค.

4. ๋””์ž์ธ ์‹œ์Šคํ…œ

  • ๊ณตํ†ต ๋ฒ„ํŠผ, ๋ ˆ์ด๋ธ”, ๊ฒ€์ƒ‰๋ฐ” ๋“ฑ ์žฌ์‚ฌ์šฉ ๊ฐ€๋Šฅํ•œ UI ์ปดํฌ๋„ŒํŠธ๋ฅผ ์ •์˜ํ•˜์—ฌ ํ™”๋ฉด ๊ฐ„ ์ผ๊ด€์„ฑ์„ ์œ ์ง€ํ•ฉ๋‹ˆ๋‹ค.

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

  • ๋ชจ๋“ˆํ™”๋œ ํด๋ฆฐ ์•„ํ‚คํ…์ฒ˜: Presentation, Domain, Data, Core(Infrastructure) ๋ ˆ์ด์–ด๋กœ ๋‚˜๋ˆ„์–ด ์ฑ…์ž„์„ ๋ถ„๋ฆฌํ•˜์˜€์œผ๋ฉฐ, ๊ฐ ๋ ˆ์ด์–ด๋Š” Interface ๋ชจ๋“ˆ์„ ํ†ตํ•ด ์„œ๋กœ ํ†ต์‹ ํ•ฉ๋‹ˆ๋‹ค.
  • ์˜์กด์„ฑ ์ฃผ์ž… ์ปจํ…Œ์ด๋„ˆ: ์ปค์Šคํ…€ DIContainer์™€ @Dependency ํ”„๋กœํผํ‹ฐ ๋ž˜ํผ๋ฅผ ์‚ฌ์šฉํ•ด ๋Ÿฐํƒ€์ž„์— ์˜์กด์„ฑ์„ ๋“ฑ๋ก/ํ•ด๊ฒฐํ•ฉ๋‹ˆ๋‹ค.
  • ๋ฆฌ์•กํ‹ฐ๋ธŒ ์ƒํƒœ ๊ด€๋ฆฌ: ReactorKit๊ณผ RxSwift๋ฅผ ํ†ตํ•ด ํ™”๋ฉด ์ƒํƒœ๋ฅผ ์„ ์–ธ์ ์œผ๋กœ ๊ธฐ์ˆ ํ•˜๊ณ , ์‚ฌ์šฉ์ž ์•ก์…˜์„ ๋ช…ํ™•ํžˆ ๋ถ„๋ฅ˜ํ•ฉ๋‹ˆ๋‹ค.

๋ชจ๋“ˆ ๊ตฌ์„ฑ

๊ณ„์ธต ์ฃผ์š” ๋ชจ๋“ˆ ์„ค๋ช…
Presentation Presentation, LoginFeature, SearchFeature, DesignSystem ํ™”๋ฉด, ๋„ค๋น„๊ฒŒ์ด์…˜, ๊ณตํ†ต UI ์ปดํฌ๋„ŒํŠธ ์ •์˜
Domain Domain, DomainInterface ์—”ํ„ฐํ‹ฐ, ๋ฆฌํฌ์ง€ํ† ๋ฆฌ/์œ ์Šค์ผ€์ด์Šค ์ธํ„ฐํŽ˜์ด์Šค์™€ ๊ตฌํ˜„ ์ œ๊ณต
Data Data ๋„คํŠธ์›Œํฌ ํ†ต์‹ , DTO ๋ณ€ํ™˜, ์ €์žฅ์†Œ ๊ตฌํ˜„ ๊ด€๋ฆฌ
Core Infrastructure ๋กœ๊น…, ๋„คํŠธ์›Œํฌ, DI ๋“ฑ ๊ณตํ†ต ์ธํ”„๋ผ ์ œ๊ณต

๊ธฐ์ˆ  ์Šคํƒ

  • Language & Tooling: Swift 5.9, Xcode 16.2
  • Reactive: ReactorKit, RxSwift, RxCocoa
  • UI/UX: SnapKit, FloatingPanel, NMapsMap, Custom Design System
  • Networking: Alamofire ๊ธฐ๋ฐ˜ Provider, TokenInterceptor, RxSwift Observables
  • Third-Party Services: Kakao SDK, Naver Maps ์ธ์ฆ ์„ค์ •์„ ์•ฑ ์‹คํ–‰ ์‹œ ์ดˆ๊ธฐํ™”ํ•ฉ๋‹ˆ๋‹ค.

์‹œ์ž‘ํ•˜๊ธฐ

  1. ์ €์žฅ์†Œ๋ฅผ ํด๋ก ํ•ฉ๋‹ˆ๋‹ค.
    git clone https://github.com/PopPool/iOS.git
  2. ํ•„์š”ํ•œ ์„œ๋ธŒ๋ชจ๋“ˆ ๋˜๋Š” Swift Package Dependencies๋ฅผ Xcode์—์„œ Resolveํ•ฉ๋‹ˆ๋‹ค.
  3. Poppool.xcworkspace๋ฅผ ์—ด๊ณ , Secrets ๊ตฌ์กฐ์ฒด์— ํ•„์š”ํ•œ API ํ‚ค(์นด์นด์˜ค, ๋„ค์ด๋ฒ„ ์ง€๋„ ๋“ฑ)๋ฅผ ์„ค์ •ํ•ฉ๋‹ˆ๋‹ค.
  4. iOS 16 ์ด์ƒ ์‹œ๋ฎฌ๋ ˆ์ดํ„ฐ ํ˜น์€ ๊ธฐ๊ธฐ์—์„œ ๋นŒ๋“œ ๋ฐ ์‹คํ–‰ํ•ฉ๋‹ˆ๋‹ค.

ํ˜‘์—… ๊ทœ์น™

  • ์ƒˆ๋กœ์šด ์˜์กด์„ฑ์€ DIContainer.register๋ฅผ ํ†ตํ•ด ๋“ฑ๋กํ•˜๊ณ , ํ•„์š”ํ•œ ๊ณณ์—์„œ๋Š” @Dependency ๋ž˜ํผ๋กœ ์ฃผ์ž…๋ฐ›์Šต๋‹ˆ๋‹ค.
  • ํ™”๋ฉด ์ƒํƒœ๋Š” ReactorKit์„ ํ†ตํ•ด Action/Mutation/State ํŒจํ„ด์œผ๋กœ ์ •์˜ํ•˜๋ฉฐ, RxSwift DisposeBag์„ ์ด์šฉํ•ด ๋ฉ”๋ชจ๋ฆฌ๋ฅผ ๊ด€๋ฆฌํ•ฉ๋‹ˆ๋‹ค.
  • ๋„คํŠธ์›Œํฌ ๋กœ๊น…๊ณผ ์—๋Ÿฌ ์ฒ˜๋ฆฌ๋Š” Provider ๋ ˆ๋ฒจ์—์„œ ๊ณตํ†ต์ ์œผ๋กœ ์ฒ˜๋ฆฌํ•˜๊ณ , ๋„๋ฉ”์ธ์—์„œ๋Š” ์ˆœ์ˆ˜ ๋ชจ๋ธ๋งŒ ๋…ธ์ถœํ•ฉ๋‹ˆ๋‹ค.

About

๐Ÿ›๏ธ ํฉ์–ด์ ธ ์žˆ๋Š” ํŒ์—…์Šคํ† ์–ด ์ •๋ณด๋ฅผ ํ•œ๊ณณ์—์„œ ํ™•์ธํ•˜์„ธ์š”!

Resources

Stars

Watchers

Forks

Contributors 5