/iOS-Team-2-Client

BUDi

Primary LanguageSwiftApache License 2.0Apache-2.0

BUDi

Untitled

๐Ÿ“Œ Topic

  • ๋Œ€ํ•™์ƒ ์—ฐํ•ฉ ๋™์•„๋ฆฌ 'YAPP' ํ”„๋กœ์ ํŠธ
  • ๊ธฐํš์ž, ๊ฐœ๋ฐœ์ž, ๋””์ž์ด๋„ˆ๋“ค์„ ์œ„ํ•œ ํŒ€ ๋นŒ๋”ฉ ํ”Œ๋žซํผ ์•ฑ
  • ๋‹จ์ˆœํ•œ ํŒ€๋นŒ๋”ฉ์ด ์•„๋‹Œ, ์‹ค๋ ฅ ํ–ฅ์ƒ์„ ์ค‘์ ์œผ๋กœ ๊ตฌ์„ฑ๋œ ์•ฑ
  • ํ”„๋กœ์ ํŠธ ํ›„, ์ƒํ˜ธํ‰๊ฐ€๋ฅผ ํ†ตํ•ด ๋ ˆ๋ฒจ์—…์„ ํ•  ์ˆ˜ ์žˆ๋Š” ์‹œ์Šคํ…œ

๐Ÿค” Summary

์„ธ์ƒ์—๋Š” ๋งŽ์€ ํŒ€ ๋นŒ๋”ฉ ํ”Œ๋žซํผ์ด ์กด์žฌํ•˜์ง€๋งŒ, ์—ฌ๋Ÿฌ๊ฐ€์ง€ ๋ฌธ์ œ๊ฐ€ ์กด์žฌํ•ฉ๋‹ˆ๋‹ค. ๊ฐ€๋ น ํŒ€์›๋“ค๊ฐ„์˜ ์†Œํ†ต ๋ถˆ๊ฐ€๋กœ ํ”„๋กœ์ ํŠธ๊ฐ€ ์ง„ํ–‰๋˜์ง€ ์•Š์•˜๋‹ค๊ฑฐ๋‚˜, ํŒ€์›๋“ค์˜ ๋Šฅ๋ ฅ์น˜๋ฅผ ํ™•์ธํ•  ์ˆ˜ ์žˆ๋Š” ๋ฐฉ๋ฒ•์ด ์—†๊ธฐ ๋•Œ๋ฌธ์— ํŒ€์„ ๊พธ๋ฆด ๋•Œ์— ๊ณ ๋ฏผ์ด ๋“ค๊ธฐ๋„ ํ•ฉ๋‹ˆ๋‹ค. ๋˜ํ•œ ํŒ€์›๋“ค์˜ ์‹ ์›๋ณด์ฆ ๋˜ํ•œ ๋˜์ง€ ์•Š์•„ ์–ด๋–ค ์ผ์ด ์ผ์–ด๋‚ ์ง€ ๋ชจ๋ฆ…๋‹ˆ๋‹ค. ๋”ฐ๋ผ์„œ ์ด๋Ÿฌํ•œ ๋ฌธ์ œ๋“ค์„ ํ•ด๊ฒฐํ•ด ๋ณด๊ณ ์ž BUDi ๋ฅผ ๋งŒ๋“ค์–ด๋ณด์•˜์Šต๋‹ˆ๋‹ค.

๐ŸŒŸ Key Function

  • ํšŒ์›๊ฐ€์ž… ์‹œ ๋„ค์ด๋ฒ„ ๊ณ„์ • ๋กœ๊ทธ์ธ์„ ํ†ตํ•ด ๊ฐ„ํŽธ๊ฐ€์ž…์„ ํ•  ์ˆ˜ ์žˆ์Œ
  • ๋Šฅ๋ ฅ์น˜๋ฅผ ์ƒˆ์‹น, ๋ฌ˜๋ชฉ, ๋‚˜๋ฌด, ์ˆฒ์œผ๋กœ ๋ ˆ๋ฒจํ™”๋ฅผ ์‹œ์ผœ ๊ฐ ๊ธฐ์ค€์— ๋„๋‹ฌํ–ˆ์„ ์‹œ ๋ ˆ๋ฒจ์—…์„ ์‹œ์ผœ์ฃผ๋Š” ์‹œ์Šคํ…œ์„ ์ ์šฉ
  • ํ”„๋กœ์ ํŠธ ์ด๋ ฅ ๋ฐ ํŒ€์› ํ‰๊ฐ€ ๊ฒฐ๊ณผ๋กœ ํŒ€์›์˜ ์‹ ์›๋ณด์ฆ์ด ๊ฐ€๋Šฅ
  • ๊ธฐ์ˆ  ์Šคํƒ์„ ํ•ด์‹œํƒœ๊ทธ๋กœ ํ‘œ์‹œํ•˜์—ฌ ์ง๊ด€์ ์œผ๋กœ ์Šคํƒ์„ ํ™•์ธํ•  ์ˆ˜ ์žˆ์Œ

๐Ÿ›  Tech Stack

Swift, Kingfisher, Firebase, Alamofire, Moya , SwiftLint , SnapKit , Combine , CombineCocoa

โš™๏ธ Architecture

  • MVVM

๐Ÿง‘๐Ÿปโ€๐Ÿ’ป Team

  • ๊ธฐํš์ž 1๋ช…
  • ๋””์ž์ด๋„ˆ 1๋ช…
  • ๋ฐฑ์—”๋“œ 2๋ช…
  • iOS ์•ฑ ๊ฐœ๋ฐœ์ž 3๋ช…

โœ‹๐Ÿป Part

  • iOS ์•ฑ ๋กœ๊ทธ์ธ, ์ฑ„ํŒ… ๊ฐœ๋ฐœ
  • ๋กœ๊ทธ์ธ API, ํŒ€์› ์ฐพ๊ธฐ API ์—ฐ๊ฒฐ ํ›„ ๊ฐœ๋ฐœ

๐Ÿ“ Learned

  • Combine ์„ ์‚ฌ์šฉํ•˜๋‹ค๋ณด๋‹ˆ, MVVM ํŒจํ„ด๊ณผ Subscribe ์˜ ๊ฐœ๋…์„ ๊ณต๋ถ€ํ•ด๋ณผ ์ˆ˜ ์žˆ์—ˆ์Œ
  • ํ™”๋ฉด ์ „ํ™˜ ์ฝ”๋“œ๋ฅผ ๋ชจ์„ ์ˆ˜ ์žˆ๋Š” Coordinator ๋ฅผ ์‚ฌ์šฉํ•ด๋ณด๋ฉฐ, ํ™”๋ฉด ์ „ํ™˜์„ ํšจ์œจ์ ์œผ๋กœ ํ•  ์ˆ˜ ์žˆ๋‹ค๋Š” ๊ฒƒ์„ ์•Œ๊ฒŒ ๋˜์—ˆ์Œ
  • Naver API๋ฅผ ์‚ฌ์šฉํ–ˆ์„ ๋•Œ, Alamofire๋ฅผ ์‚ฌ์šฉํ•˜๊ณ  ์‹œ๋ฎฌ๋ ˆ์ดํ„ฐ๋ฅผ ๋Œ๋ฆด ์ˆ˜ ์—†๋Š” ๋ฌธ์ œ๊ฐ€ ์ƒ๊น€. ๋”ฐ๋ผ์„œ Combine์˜ Publisher ์ค‘ ํ•˜๋‚˜์ธ dataTaskPublisher ๋ฅผ ์‚ฌ์šฉํ•˜์—ฌ Parsing ์„ ํ•ด๋ณผ ์ˆ˜ ์žˆ์—ˆ์Œ.
  • API Parsing์˜ ๋ฐ์ดํ„ฐ ๊ทœ๊ฒฉ์„ Generic ์œผ๋กœ ์ •์˜ํ•ด ๋ฐ›์œผ๋ฉด์„œ, Generic ์„ ์‚ฌ์šฉํ•ด๋ณผ ์ˆ˜ ์žˆ์—ˆ์Œ
  • SwiftLint ๋ฅผ ์‚ฌ์šฉํ•ด๋ณด๋ฉฐ, ์ฝ”๋“œ ์ปจ๋ฒค์…˜์˜ ์ค‘์š”์„ฑ์— ๋Œ€ํ•ด ์•Œ๊ฒŒ ๋˜์—ˆ์Œ

๐Ÿ“ท Screenshot

แ„†แ…ฎแ„Œแ…ฆ 5 001