Skip to content

Record-Management/IOS

Folders and files

NameName
Last commit message
Last commit date

Latest commit

ย 

History

478 Commits
ย 
ย 
ย 
ย 
ย 
ย 
ย 
ย 
ย 
ย 
ย 
ย 

Repository files navigation

์”จ๋“œ๋ฐ์ด (SeedDay) - Record Management iOS App



1. ํ”„๋กœ์ ํŠธ ๊ฐœ์š”

์”จ๋“œ๋ฐ์ด๋Š” ์‚ฌ์šฉ์ž์˜ ๊พธ์ค€ํ•œ ๊ธฐ๋ก์„ ํ†ตํ•ด ์„ฑ์žฅ์„ ๋•๋Š” iOS ์• ํ”Œ๋ฆฌ์ผ€์ด์…˜์ž…๋‹ˆ๋‹ค. ์‚ฌ์šฉ์ž๋Š” ๋งค์ผ์˜ ๊ฐ์ •, ์šด๋™, ์Šต๊ด€ ๋“ฑ์„ ๊ธฐ๋กํ•  ์ˆ˜ ์žˆ์œผ๋ฉฐ, ์„ค์ •ํ•œ ๋ชฉํ‘œ๋ฅผ ๋‹ฌ์„ฑํ•ด๋‚˜๊ฐ€๋ฉฐ 'ํ•˜๋ฃจ ๋‚˜๋ฌด'๋ฅผ ํ‚ค์šฐ๋Š” ์‹œ๊ฐ์ ์ธ ๊ฒฝํ—˜์„ ํ•  ์ˆ˜ ์žˆ์Šต๋‹ˆ๋‹ค.

๋‹จ์ˆœํ•œ ๊ธฐ๋ก์„ ๋„˜์–ด, ์‚ฌ์šฉ์ž๊ฐ€ ์ž์‹ ์˜ ์‚ถ์„ ๊ฐ€๊พธ๊ณ  ์„ฑ์žฅํ•˜๋Š” ์ฆ๊ฑฐ์›€์„ ๋А๋‚„ ์ˆ˜ ์žˆ๋„๋ก ์„ค๊ณ„๋˜์—ˆ์Šต๋‹ˆ๋‹ค.

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

  • ์†Œ์…œ ๋กœ๊ทธ์ธ: ์นด์นด์˜ค ๋ฐ Apple ๊ณ„์ •์„ ํ†ตํ•œ ๊ฐ„ํŽธํ•œ ํšŒ์›๊ฐ€์ž… ๋ฐ ๋กœ๊ทธ์ธ์„ ์ง€์›ํ•ฉ๋‹ˆ๋‹ค.
  • ์˜จ๋ณด๋”ฉ: ์‚ฌ์šฉ์ž ๋งž์ถคํ˜• ๊ฒฝํ—˜์„ ์œ„ํ•ด ์ดˆ๊ธฐ ์„ค์ •(๋‹‰๋„ค์ž„, ์ฃผ ๊ธฐ๋ก ํƒ€์ž…, ๋ชฉํ‘œ ์„ค์ • ๋“ฑ) ๊ณผ์ •์„ ์•ˆ๋‚ดํ•ฉ๋‹ˆ๋‹ค.
  • ๊ธฐ๋ก ๊ด€๋ฆฌ:
    • ํ•˜๋ฃจ ๊ธฐ๋ก: ๊ทธ๋‚ ์˜ ๊ฐ์ •, ์ƒ๊ฐ, ์‚ฌ์ง„์„ ํ•จ๊ป˜ ๊ธฐ๋กํ•ฉ๋‹ˆ๋‹ค.
    • ์šด๋™ ๊ธฐ๋ก: ๋‹ค์–‘ํ•œ ์šด๋™ ์ข…๋ฅ˜(๋Ÿฌ๋‹, ์›จ์ดํŠธ ๋“ฑ)์™€ ์„ธ๋ถ€ ํ•ญ๋ชฉ(์†Œ๋ชจ ์นผ๋กœ๋ฆฌ, ์‹œ๊ฐ„, ๊ฑธ์Œ ์ˆ˜ ๋“ฑ)์„ ๊ธฐ๋กํ•ฉ๋‹ˆ๋‹ค.
    • ์Šต๊ด€ ๊ธฐ๋ก: ๋งŒ๋“ค๊ณ  ์‹ถ์€ ์Šต๊ด€์„ ๋“ฑ๋กํ•˜๊ณ , ์•Œ๋ฆผ ์„ค์ • ๋ฐ ๋‹ฌ์„ฑ ์—ฌ๋ถ€๋ฅผ ์ฒดํฌํ•ฉ๋‹ˆ๋‹ค.
  • ๋ฉ”์ธ ํ™”๋ฉด:
    • ์‚ฌ์šฉ์ž์˜ ๋ชฉํ‘œ ๋‹ฌ์„ฑ๋ฅ ์— ๋”ฐ๋ผ ์„ฑ์žฅํ•˜๋Š” 'ํ•˜๋ฃจ ๋‚˜๋ฌด'๋ฅผ ์‹œ๊ฐ์ ์œผ๋กœ ์ œ๊ณตํ•ฉ๋‹ˆ๋‹ค.
    • ํ•˜๋‹จ ์‹œํŠธ(Bottom Sheet)๋ฅผ ํ†ตํ•ด ์„ ํƒํ•œ ๋‚ ์งœ์˜ ๊ธฐ๋ก์„ ํ™•์ธํ•˜๊ณ  ๊ด€๋ฆฌํ•  ์ˆ˜ ์žˆ์Šต๋‹ˆ๋‹ค.
  • ์บ˜๋ฆฐ๋”: ์›”๋ณ„/์ฃผ๋ณ„ ์บ˜๋ฆฐ๋”๋ฅผ ํ†ตํ•ด ๊ณผ๊ฑฐ์˜ ๊ธฐ๋ก์„ ํ•œ๋ˆˆ์— ๋ณผ ์ˆ˜ ์žˆ์œผ๋ฉฐ, ๊ธฐ๋ก ์ข…๋ฅ˜๋ณ„ ํ•„ํ„ฐ๋ง ๊ธฐ๋Šฅ์„ ์ œ๊ณตํ•ฉ๋‹ˆ๋‹ค.
  • ๋ชฉํ‘œ ์‹œ์Šคํ…œ:
    • ์‚ฌ์šฉ์ž๊ฐ€ ์ง์ ‘ ๋ชฉํ‘œ ๊ธฐ๊ฐ„(10์ผ, 20์ผ, 30์ผ)์„ ์„ค์ •ํ•ฉ๋‹ˆ๋‹ค.
    • ๋ชฉํ‘œ ๋‹ฌ์„ฑ ์‹œ ๋ฆฌํฌํŠธ๋ฅผ ์ œ๊ณตํ•˜์—ฌ ์„ฑ์ทจ๊ฐ์„ ๊ณ ์ทจํ•ฉ๋‹ˆ๋‹ค.
  • ์•Œ๋ฆผ: Firebase Cloud Messaging(FCM)์„ ํ™œ์šฉํ•˜์—ฌ ๊ธฐ๋ก ์•Œ๋ฆผ, ๋ชฉํ‘œ ์„ค์ • ์•Œ๋ฆผ, ์‹œ์Šคํ…œ ๊ณต์ง€ ๋“ฑ ๋‹ค์–‘ํ•œ ํ‘ธ์‹œ ์•Œ๋ฆผ์„ ์ œ๊ณตํ•ฉ๋‹ˆ๋‹ค.
  • ์„ค์ •: ํ”„๋กœํ•„ ์ •๋ณด(๋‹‰๋„ค์ž„, ์ƒ์ผ) ์ˆ˜์ •, ์•Œ๋ฆผ ์ˆ˜์‹  ์—ฌ๋ถ€ ์„ค์ •, ์•ฝ๊ด€ ํ™•์ธ ๋ฐ ๋ฌธ์˜ํ•˜๊ธฐ ๋“ฑ์˜ ๊ธฐ๋Šฅ์„ ์ œ๊ณตํ•ฉ๋‹ˆ๋‹ค.

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

์ด ํ”„๋กœ์ ํŠธ๋Š” Clean Architecture๋ฅผ ๊ธฐ๋ฐ˜์œผ๋กœ ์„ค๊ณ„๋˜์—ˆ์œผ๋ฉฐ, ๊ฐ ๊ณ„์ธต์€ ๋‹ค์Œ๊ณผ ๊ฐ™์€ ์—ญํ• ์„ ์ˆ˜ํ–‰ํ•ฉ๋‹ˆ๋‹ค.

  • Presentation Layer:
    • MVVM-C (Model-View-ViewModel-Coordinator) ํŒจํ„ด์„ ์ ์šฉํ–ˆ์Šต๋‹ˆ๋‹ค.
    • View: SwiftUI๋ฅผ ์‚ฌ์šฉํ•˜์—ฌ UI๋ฅผ ์„ ์–ธ์ ์œผ๋กœ ๊ตฌ์„ฑํ•ฉ๋‹ˆ๋‹ค.
    • ViewModel: View์˜ ์ƒํƒœ๋ฅผ ๊ด€๋ฆฌํ•˜๊ณ , UseCase๋ฅผ ํ†ตํ•ด ๋น„์ฆˆ๋‹ˆ์Šค ๋กœ์ง์„ ์‹คํ–‰ํ•ฉ๋‹ˆ๋‹ค.
    • Coordinator: ํ™”๋ฉด ์ „ํ™˜ ๋ฐ Navigation ๋กœ์ง์„ ์ค‘์•™์—์„œ ๊ด€๋ฆฌํ•˜์—ฌ View์˜ ์˜์กด์„ฑ์„ ๋‚ฎ์ถฅ๋‹ˆ๋‹ค.
  • Domain Layer:
    • Entity: ์•ฑ์˜ ํ•ต์‹ฌ ๋น„์ฆˆ๋‹ˆ์Šค ๋ชจ๋ธ์„ ์ •์˜ํ•ฉ๋‹ˆ๋‹ค. (e.g., User, Record, Goal)
    • UseCase: ํŠน์ • ๋น„์ฆˆ๋‹ˆ์Šค ๋กœ์ง์„ ์บก์Аํ™”ํ•ฉ๋‹ˆ๋‹ค. ViewModel์€ ์ด UseCase๋ฅผ ํ˜ธ์ถœํ•˜์—ฌ ์ž‘์—…์„ ์ˆ˜ํ–‰ํ•ฉ๋‹ˆ๋‹ค.
    • Repository (Protocol): ๋ฐ์ดํ„ฐ ์†Œ์Šค์— ๋Œ€ํ•œ ์ธํ„ฐํŽ˜์ด์Šค๋ฅผ ์ •์˜ํ•˜์—ฌ Data Layer์™€์˜ ์˜์กด์„ฑ์„ ๋ถ„๋ฆฌํ•ฉ๋‹ˆ๋‹ค.
  • Data Layer:
    • Repository (Implementation): Domain Layer์— ์ •์˜๋œ Repository ํ”„๋กœํ† ์ฝœ์„ ๊ตฌํ˜„ํ•ฉ๋‹ˆ๋‹ค.
    • Network: Alamofire๋ฅผ ์‚ฌ์šฉํ•˜์—ฌ ์„œ๋ฒ„์™€์˜ API ํ†ต์‹ ์„ ๋‹ด๋‹นํ•ฉ๋‹ˆ๋‹ค.
    • Data Source: Keychain (ํ† ํฐ ๊ด€๋ฆฌ), UserDefaults ๋“ฑ ๋กœ์ปฌ ๋ฐ์ดํ„ฐ ์ฒ˜๋ฆฌ๋ฅผ ๋‹ด๋‹นํ•ฉ๋‹ˆ๋‹ค.

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

  • UI Framework: SwiftUI
  • Concurrency: Async/Await (Swift Concurrency)
  • Reactive Programming: Combine
  • Networking: Alamofire
  • Authentication: KakaoSDK, AuthenticationServices (Sign in with Apple)
  • Push Notifications & Analytics: Firebase (FCM, Analytics)
  • Dependency Management: Swift Package Manager

5. ํด๋” ๊ตฌ์กฐ

RecordManagment/
โ”œโ”€โ”€โ”€ AppDelegate.swift         # Firebase, Notification ์„ค์ •
โ”œโ”€โ”€โ”€ Analytics/                # Firebase Analytics ๊ด€๋ฆฌ
โ”œโ”€โ”€โ”€ Assets.xcassets/          # ์•ฑ ์•„์ด์ฝ˜, ์ด๋ฏธ์ง€ ๋“ฑ ๋ฆฌ์†Œ์Šค
โ”œโ”€โ”€โ”€ Data/
โ”‚    โ”œโ”€โ”€โ”€ Repository/          # Domain์˜ Repository ํ”„๋กœํ† ์ฝœ ๊ตฌํ˜„์ฒด
โ”‚    โ””โ”€โ”€โ”€ Network/             # ๋„คํŠธ์›Œํฌ ํ†ต์‹ (Alamofire, Manager)
โ”œโ”€โ”€โ”€ Domain/
โ”‚    โ”œโ”€โ”€โ”€ Entity/              # ํ•ต์‹ฌ ๋น„์ฆˆ๋‹ˆ์Šค ๋ชจ๋ธ
โ”‚    โ”œโ”€โ”€โ”€ Repository/          # ๋ฐ์ดํ„ฐ ๊ณ„์ธต์˜ ์ธํ„ฐํŽ˜์ด์Šค (Protocol)
โ”‚    โ””โ”€โ”€โ”€ UseCase/             # ๋น„์ฆˆ๋‹ˆ์Šค ๋กœ์ง
โ”œโ”€โ”€โ”€ Extensions/
โ”‚    โ”œโ”€โ”€โ”€ Common/              # Foundation, UIKit ํด๋ž˜์Šค ํ™•์žฅ
โ”‚    โ”œโ”€โ”€โ”€ Components/          # ์žฌ์‚ฌ์šฉ ๊ฐ€๋Šฅํ•œ SwiftUI View ์ปดํฌ๋„ŒํŠธ
โ”‚    โ””โ”€โ”€โ”€ Modifier/            # ViewModifier ์ •์˜
โ”œโ”€โ”€โ”€ Presentation/
โ”‚    โ”œโ”€โ”€โ”€ Coordinator/         # ํ™”๋ฉด ๋„ค๋น„๊ฒŒ์ด์…˜ ๊ด€๋ฆฌ
โ”‚    โ”œโ”€โ”€โ”€ View/                # SwiftUI ๋ทฐ
โ”‚    โ””โ”€โ”€โ”€ ViewModel/           # ๋ทฐ์˜ ์ƒํƒœ ๋ฐ ๋กœ์ง ๊ด€๋ฆฌ
โ””โ”€โ”€โ”€ Resources/
     โ””โ”€โ”€โ”€ Font/                # ์ปค์Šคํ…€ ํฐํŠธ

About

IOS Environment Record-Management

Resources

Stars

Watchers

Forks

Releases

No releases published

Packages

No packages published

Languages