Skip to content

IF-TG/iOS

Folders and files

NameName
Last commit message
Last commit date

Latest commit

ย 

History

6,218 Commits
ย 
ย 
ย 
ย 
ย 
ย 
ย 
ย 
ย 
ย 

Repository files navigation

์—ฌ๊ฐ€: ์—ฌํ–‰์„ ๊ฐ€๋‹ค

image

ํ”„๋กœ์ ํŠธ ์†Œ๊ฐœ

๋จผ์ € ๋‹ค๋…€์˜จ ์—ฌํ–‰๊ฐ์˜ ์—ฌํ–‰ ๊ธฐ๋ก์„ ํ›„๊ธฐ๋กœ ๊ณต์œ ํ•˜๊ณ  ๊ตญ๋‚ด ์†Œ์™ธ ๊ด€๊ด‘์ง€๋ฅผ ํ™œ์„ฑํ™” ํ•˜๊ธฐ ์œ„ํ•œ ์„œ๋น„์Šค ์ž…๋‹ˆ๋‹ค.

๐Ÿ‘‰ ๊ฐœ๋ฐœ ๋™๊ธฐ

๋งŽ์€ ํ˜„๋Œ€์ธ์ด SNS ๊ด‘๊ณ ์™€ ์•Œ๊ณ ๋ฆฌ์ฆ˜์— ์˜์กดํ•ด ์—ฌํ–‰์ง€๋ฅผ ์„ ํƒํ•˜๋ฉด์„œ, ์ผ๋ถ€ ๊ตญ๋‚ด ์—ฌํ–‰์ง€๋“ค์ด ์†Œ์™ธ๋˜๊ณ  ์žˆ์Šต๋‹ˆ๋‹ค. ์ด ๋ฌธ์ œ๋ฅผ ํ•ด๊ฒฐํ•˜๊ธฐ ์œ„ํ•ด, ํ•œ๊ตญ๊ด€๊ด‘๊ณต์‚ฌ ๊ณต๊ณต๋ฐ์ดํ„ฐ๋ฅผ ํ™œ์šฉํ•œ ์—ฌํ–‰ ์ปค๋ฎค๋‹ˆํ‹ฐ ์•ฑ ์„œ๋น„์Šค๋ฅผ ๊ฐœ๋ฐœํ•˜์—ฌ ์ˆจ๊ฒจ์ง„ ์—ฌํ–‰์ง€๋ฅผ ๋ฐœ๊ตดํ•˜๊ณ  ๊ณต์œ ํ•  ์ˆ˜ ์žˆ๋Š” ํ”Œ๋ ›ํผ์„ ๋งˆ๋ จํ–ˆ์Šต๋‹ˆ๋‹ค๐Ÿคฉ


๐Ÿง‘๐Ÿปโ€๐Ÿ’ป ํŒ€ ์†Œ๊ฐœ

BE: ์ž„๊ฒฝ์™„ iOS: ๋ตํ‚น iOS: ๊น€์„ํ˜„ Design: ์˜ค์ˆ˜๋ฏผ
MoonDooo SHcommit letusHyun OhSumin

๐ŸŽฏ ๋™๋ฃŒ์™€์˜ ๋ชฉํ‘œ

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

๐Ÿ’ก '์—ฌ๊ฐ€' ์Šคํ† ๋ฆฌ๊ฐ€ ๋‹ด๊ธด ๊ณต๊ฐ„


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

1st party

  • UIKit, AutoLayout
  • Combine, GCD
  • XCTest
  • Photos
  • LinkPresentation
  • NotificationCenter

3rd party

  • Swinject
  • Alamofire, Firebase, GoogleSignIn
  • AppsFlyer
  • Snapkit, Swiftlint

Etc

  • Figma, SwiftPM, Github project kanban

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

  • Minimum deployment target: iOS 13.0

Project Architecture & System Flow

image
  • Clean Architecture
  • Input/Output binding ( in MVVM )
  • Coordinator

๊ฐ๊ฐ์˜ layer ๋งˆ๋‹ค ๊ฐ์ฒด๋“ค์€ protocol์„ ํ†ตํ•ด ์˜์กด์„ฑ์„ ๋‚ฎ์ถ”์–ด ์„œ๋กœ ํ˜‘๋ ฅํ•ฉ๋‹ˆ๋‹ค. ์ด๋•Œ DIP๋ฅผ ์ง€ํ‚ค๊ณ ์ž ๋…ธ๋ ฅํ–ˆ์Šต๋‹ˆ๋‹ค. ๋˜ํ•œ layer ๋ณ„๋กœ Assembly์—์„œ ๊ฐ์ฒด๋ฅผ ๋“ฑ๋กํ•ด, ๊ฐ์ฒด์˜ ์˜์กด์„ฑ ์ฃผ์ž…์— ํ•„์š”ํ•œ ๋กœ์ง์„ ํ•ด๋‹น Layer์˜ Assembly์—์„œ ํ•œ์ •ํ•  ์ˆ˜ ์žˆ์—ˆ์Šต๋‹ˆ๋‹ค.


์–ดํ”Œ๋ฆฌ์ผ€์ด์…˜ ๊ธฐ๋Šฅ

์ฃ„์†กํ•ฉ๋‹ˆ๋‹ค.

Application ๊ฐ flow๋ณ„ ๋™์ž‘ gif๋Š” ํฌ๋กฌ ๋ธŒ๋ผ์šฐ์ €์—์„œ ์›ํ™œํ•˜๊ฒŒ ๋™์ž‘๋ฉ๋‹ˆ๋‹ค. (์‚ฌํŒŒ๋ฆฌ์—์„œ๋Š” gif๊ฐ€ ๋™์ž‘๋˜์ง€ ์•Š๋Š” ํ˜„์ƒ์„ ๋ฐœ๊ฒฌํ–ˆ์Šต๋‹ˆ๋‹ค๐Ÿ˜ญ.) GIF ์šฉ๋Ÿ‰์ด ์žˆ์–ด์„œ ๋•Œ๋ฌธ์— ์ผ๋ถ€ ํ™”๋ฉด์€ ๋กœ๋”ฉ ์ง€์—ฐ์ด ๊ฑธ๋ฆฝ๋‹ˆ๋‹ค.

[ ๋กœ๊ทธ์ธ ํ™”๋ฉด ]

๋กœ๊ทธ์ธ ํ™”๋ฉด แ„€แ…ฎแ„€แ…ณแ†ฏ+แ„‘แ…กแ„‹แ…ตแ„‹แ…ฅแ„‰แ…ณแ„แ…ฉแ„‹แ…ฅแ„…แ…ฉแ„€แ…ตแ†ซ gif3
๋กœ๊ทธ์ธ ํ™”๋ฉด ๊ตฌ๊ธ€ ๋กœ๊ทธ์ธ ์—ฐ๋™ ์• ํ”Œ ๋กœ๊ทธ์ธ ์—ฐ๋™

[ ํ”ผ๋“œ ์—ฌํ–‰ ํ›„๊ธฐ ํฌ์ŠคํŠธ ํ™”๋ฉด ]

์ œ๋ชฉ+๊ธ€ ์ถ”๊ฐ€ ๊ธฐ๋ณธ ์ด๋ฏธ์ง€ ์—ฐ์† ์ถ”๊ฐ€ ์ด๋ฏธ์ง€ ์ถ”๊ฐ€ -> ๊ธ€ ์ถ”๊ฐ€ -> ์ด๋ฏธ์ง€ ์‚ญ์ œ -> ๊ธ€ ์ œ๊ฑฐ
์นดํ…Œ๊ณ ๋ฆฌ ํ™”๋ฉด ์ดˆ๊ธฐ->์„ ํƒ์™„๋ฃŒ๊นŒ์ง€ ์นดํ…Œ๊ณ ๋ฆฌ ํ™”๋ฉด ๋Œ€๋ถ„๋ฅ˜ ์ „ํ™˜ ์นดํ…Œ๊ณ ๋ฆฌ ํ™”๋ฉด ์†Œ๋ถ„๋ฅ˜ ๋‹ค์ค‘ ์„ ํƒ ์นดํ…Œ๊ณ ๋ฆฌ ํ™”๋ฉด ๋‹ค์ค‘ ์„ ํƒํ•œ ์†Œ๋ถ„๋ฅ˜ ์ทจ์†Œ
ํ”ผ๋“œ ํŽ˜์ด์ง• ๋ฐ ๋ฆฌํ”„๋ ˆ์‹ฑ ํ”ผ๋“œ ์นดํ…Œ๊ณ ๋ฆฌ ํ…Œ๋งˆ ์ „ํ™˜ ์ƒ์„ธํ™”๋ฉด ์ด๋™

[ ๊ณต์œ ํ•˜๊ธฐ ๋กœ์ง ]

๊ณต์œ ํ•˜๊ธฐ ๋กœ์ง ์•ฑ์ด ๋ฐฑ๊ทธ๋ผ์šด๋“œ ์ƒํƒœ์ผ ๋•Œ ์‹คํ–‰๋˜์ง€ ์•Š์€ ์•ฑ์ผ ๋•Œ ๋งํฌ ํด๋ฆญ ์œ ํšจํ•˜์ง€ ์•Š์€ ํฌ์ŠคํŠธ์ผ ๋•Œ
๊ณต์œ ํ•˜๊ธฐ ๋กœ์ง ์•ฑ์ด ๋ฐฑ๊ทธ๋ผ์šด๋“œ ์ƒํƒœ์ผ ๋•Œ ๋งํฌ ํด๋ฆญ ์‹คํ–‰๋˜์ง€ ์•Š์€ ์•ฑ์ผ ๋•Œ ๋งํฌ ํด๋ฆญ ์œ ํšจํ•˜์ง€ ์•Š์€ ํฌ์ŠคํŠธ์ผ ๋•Œ

[ ํ”ผ๋“œ ์—ฌํ–‰ ํ›„๊ธฐ ํฌ์ŠคํŠธ ํ™”๋ฉด ]

แ„แ…ฆแ„†แ…กแ„‡แ…งแ†ฏ แ„‰แ…ฉแ„แ…ตแ†ผ แ„‘แ…ฉแ„‰แ…ณแ„แ…ณ แ„Žแ…กแ„ƒแ…กแ†ซ แ„’แ…ฎ แ„‘แ…ฆแ„‹แ…ตแ„Œแ…ตแ†ผ แ„‘แ…ตแ„ƒแ…ณ แ„’แ…กแ„แ…ณ แ„Žแ…ฑแ„‰แ…ฉ แ„‘แ…ตแ„ƒแ…ณ แ„’แ…กแ„แ…ณ แ„’แ…ฎ แ„‘แ…ฉแ„‰แ…ณแ„แ…ณแ„’แ…ชแ„†แ…งแ†ซ แ„‹แ…งแ†ซแ„ƒแ…ฉแ†ผ
ํ”ผ๋“œ ๋Œ€ํ‘œ์  ๊ณ„์ ˆ, ์ง€์—ญ ํ…Œ๋งˆ ๋ฐ ์„œ๋ธŒ ์นดํ…Œ๊ณ ๋ฆฌ ์†ŒํŒ… ํ”ผ๋“œ ํฌ์ŠคํŠธ ๊ทธ๋งŒ๋ณด๊ธฐ ๋ฐ ์Šคํฌ๋กค ํ”ผ๋“œ ํฌ์ŠคํŠธ ํ•˜ํŠธ ์ทจ์†Œ ํ”ผ๋“œ์—์„œ ํฌ์ŠคํŠธ ํ•˜ํŠธ ํ›„ ์ƒ์„ธํ™”๋ฉด ์—ฐ๋™

[ ์—ฌํ–‰ ํ›„๊ธฐ ํฌ์ŠคํŠธ ์ƒ์„ธํ™”๋ฉด ]

 ์ƒ์„ธํ™”๋ฉด ์Šคํฌ๋กค แ„‚แ…ฆแ„‡แ…ตแ„‡แ…ก แ„‹แ…ขแ„‚แ…ต  ์นดํ…Œ๊ณ ๋ฆฌ แ„‘แ…งแ†ซแ„Œแ…ตแ†ธแ„’แ…กแ„€แ…ต
์ƒ์„ธํ™”๋ฉด ์Šคํฌ๋กค ์ž์—ฐ์Šค๋Ÿฌ์šด ๋„ค๋น„๋ฐ” ์• ๋‹ˆ๋ฉ”์ด์…˜ ์นดํ…Œ๊ณ ๋ฆฌ ํ™”๋ฉด ์ƒ์„ธํ™”๋ฉด -> ํŽธ์ง‘ํ™”๋ฉด ์ด๋™

[ ๋Œ“๊ธ€๊ณผ ๋Œ€๋Œ“๊ธ€์˜ ๊ธฐ๋Šฅ์€ ๋™์ผํ•˜๊ฒŒ ๋™์ž‘ํ•ด์„œ ๋Œ“๊ธ€์˜ ๋™์ž‘ ๊ณผ์ •์€ ์ƒ๋žตํ–ˆ์Šต๋‹ˆ๋‹ค. ]

๋Œ€๋Œ“๊ธ€ ์ž‘์„ฑ แ„ƒแ…ขแ„ƒแ…ขแ†บแ„€แ…ณแ†ฏ แ„‹แ…ฅแ†ธแ„ƒแ…ฆแ„‹แ…ตแ„แ…ณ แ„ƒแ…ขแ„ƒแ…ขแ†บแ„€แ…ณแ†ฏ แ„‰แ…กแ†จแ„Œแ…ฆ แ„ƒแ…ขแ„ƒแ…ขแ†บแ„€แ…ณแ†ฏ แ„’แ…กแ„แ…ณ do, undo
์ƒ์„ธ ํ™”๋ฉด ํฌ์ŠคํŠธ ๋Œ€๋Œ“๊ธ€ ์ถ”๊ฐ€ ํฌ์ŠคํŠธ ๋Œ€๋Œ“๊ธ€ ์—…๋ฐ์ดํŠธ ํฌ์ŠคํŠธ ๋Œ€๋Œ“๊ธ€ ์‚ญ์ œ ๋Œ€๋Œ“๊ธ€ ํ•˜ํŠธ do, undo

[ํƒ€์ธ์˜ ๋Œ“๊ธ€, ๋Œ€๋Œ“๊ธ€ ์˜ต์…˜ ์„ ํƒํ•˜๋Š” ๊ฒฝ์šฐ #1, #2, #3]

๋Œ€๋Œ“๊ธ€ ์ฐจ๋‹จ #1 ๋Œ“๊ธ€ ์ฐจ๋‹จ(๋Œ€๋Œ“๊ธ€ ์กด์žฌ(O))#2 ๋Œ“๊ธ€ ์ฐจ๋‹จ์ƒํƒœ-> ๋งˆ์ง€๋ง‰ ๋Œ€๋Œ“๊ธ€ ์ฐจ๋‹จ#3

[ ์•Œ๋ฆผ์„ผํ„ฐ Flow ]

์•Œ๋ฆผ ํ™”๋ฉด. ์•Œ๋ฆผ ์ „๋ถ€ ์ œ๊ฑฐ, ๋ฆฌํ”„๋ ˆ์‹œ Firestore ๊ธฐ๋ฐ˜ ๊ณต์ง€์‚ฌํ•ญ ํ™”๋ฉด

[ ๊ฒ€์ƒ‰ Flow ]

  • ๊ฒ€์ƒ‰์— ๊ด€๋ จ๋œ ๋ชจ๋“ ๊ฒƒ

  • ๊ฒ€์ƒ‰ ๋ฉ”์ธํ™”๋ฉด, ๊ฒ€์ƒ‰ ๋ฉ”์ธํ™”๋ฉด ์—์„œ ํŠน์ • ์ƒ์„ธํ™”๋ฉด, ๊ฒ€์ƒ‰ ๋ฉ”์ธ ํ™”๋ฉด์—์„œ ๋”๋ณด๊ธฐ ๋ˆ„๋ฅผ ๊ฒฝ์šฐ (gif4๊ฐœ)

  • keyboard ์ƒํ˜ธ์ž‘์šฉ๋˜๋Š” ๊ฒ€์ƒ‰ ํ™”๋ฉด, ์ตœ๊ทผ ๊ฒ€์ƒ‰ ๊ธฐ๋ก ํ•˜๋‚˜ ์ œ๊ฑฐ ๋ฐ ์ „๋ถ€ ์ œ๊ฑฐ, ๊ฒ€์ƒ‰ ๊ฒฐ๊ณผ ํ›„ ํ™”๋ฉด, ๊ฒ€์ƒ‰ ๊ฒฐ๊ณผ ํ›„ ์นดํ…Œ๊ณ ๋ฆฌ ์„ ์ •์‹œ ์†ŒํŒ… ๋˜๋Š” ๊ณผ์ • (gif4๊ฐœ)

  • ๊ฒ€์ƒ‰ ๊ฒฐ๊ณผ ํ›„ ์ƒ์„ธ๋ณด๊ธฐ ํ™”๋ฉด, ํŽ˜์ด์ง• (gif 1๊ฐœ )

[ ์ฐœ Flow ]

  • ์ฐœ ๋””๋ ‰ํ„ฐ๋ฆฌ ์ถ”๊ฐ€ ๋ฐ ์ œ๊ฑฐ ๋ฐ ๋””๋ ‰ํ„ฐ๋ฆฌ ์ด๋ฆ„ ์ˆ˜์ • ์ฐœ ์ƒ์„ธํ™”๋ฉด ํ”ผ๋“œ ํƒญ ๋ฐ ์—ฌํ–‰ ํ›„๊ธฐ ํƒญ (gif3๊ฐœ)
  • ์ฐœ ๋””๋ ‰ํ„ฐ๋ฆฌ ์•ˆ์—์„œ ํ”ผ๋“œ ํ™”๋ฉด ํด๋ฆญํ•  ๊ฒฝ์šฐ ์ง„์ž… ๋ฐ ๋น„์–ด์žˆ๋Š” ๊ฒฝ์šฐ (gif2๊ฐœ)

[ ์„ค์ • Flow ]

[ ์„ค์ • ๋ฉ”์ธ ํ™”๋ฉด, ๋‚ด ์ •๋ณด ํ™”๋ฉด ]

แ„‰แ…ฅแ†ฏแ„Œแ…ฅแ†ผแ„†แ…ฆแ„‹แ…ตแ†ซ แ„แ…กแ„†แ…ฆแ„…แ…กแ„…แ…ฉ แ„‹แ…ตแ„†แ…ตแ„Œแ…ต แ„Žแ…ฎแ„€แ…ก แ„‚แ…ตแ†จแ„‚แ…ฆแ„‹แ…ตแ†ท แ„‡แ…งแ†ซแ„€แ…งแ†ผ แ„‘แ…ณแ„…แ…ฉแ„‘แ…ตแ†ฏ,แ„‹แ…ตแ„†แ…ตแ„Œแ…ต แ„‰แ…ฎแ„Œแ…ฅแ†ผ แ„’แ…ฎ แ„Œแ…ฅแ„Œแ…กแ†ผ
์„ค์ • ๋ฉ”์ธ ํ™”๋ฉด ๋‚ด ์ •๋ณดํ™”๋ฉด. ์นด๋ฉ”๋ผ๋กœ ํ”„๋กœํ•„ ์ด๋ฏธ์ง€ ์ถ”๊ฐ€ ๋‚ด ์ •๋ณดํ™”๋ฉด. ๋‹‰๋„ค์ž„ ๋ณ€๊ฒฝ ๋‚ด ์ •๋ณดํ™”๋ฉด. ํ”„๋กœํ•„ ์ˆ˜์ • ๋ฐ ์ด๋ฏธ์ง€ ์ˆ˜์ • ํ›„ ์ €์žฅ

[ ์ด์šฉ ์•ˆ๋‚ด ํ™”๋ฉด, ๋ฉ”์ผ ๋ฌธ์˜ ํ™”๋ฉด flow ]

์ด์šฉ ์•ˆ๋‚ด ํ™”๋ฉด ๋ฉ”์ผ ๋ฌธ์˜ํ™”๋ฉด -> ๋ฉ”์ผ ์ „์†ก flow ์—ฌ๊ฐ€ํŒ€ ๋ฉ”์ผํ•จ ๋ฉ”์ผ ์ƒ์„ธ๋‚ด์šฉ

About

iOS develop :)

Resources

License

Stars

Watchers

Forks

Releases

No releases published

Packages

 
 
 

Contributors

Languages