Skip to content

๐ŸŒฑ EST iOS ๋ถ€ํŠธ์บ ํ”„ 3์กฐ ํ”„๋กœ์ ํŠธ - ์Šค๋งˆํŠธ AI ๊ฑด๊ฐ• ์•ฑ ๊ฑท๊ธฐ ์šด๋™ ์„œ๋น„์Šค ์›Œํ‚ค(Walkee)

Notifications You must be signed in to change notification settings

rlarjsdn3/Walkee

Folders and files

NameName
Last commit message
Last commit date

Latest commit

ย 
ย 
ย 
ย 
ย 
ย 
ย 
ย 
ย 
ย 
ย 
ย 
ย 
ย 
ย 
ย 
ย 

Repository files navigation

Walkee


appIcon_light

Walkee๋Š” HealthKit๊ณผ ์—ฐ๋™๋œ ๊ฑท๊ธฐ ๋ฐ์ดํ„ฐ๋ฅผ ๊ธฐ๋ฐ˜์œผ๋กœ
Alan AI๊ฐ€ ๊ฐœ์ธ ๋งž์ถคํ˜• ํ™œ๋™ ๋ฐ ๊ฑท๊ธฐ ์ฝ”์Šค๋ฅผ ์ถ”์ฒœํ•˜๋Š” ํ—ฌ์Šค์ผ€์–ด ์•ฑ์ž…๋‹ˆ๋‹ค.
๊ฐœ์ธ์˜ ๊ฑด๊ฐ• ์ƒํƒœ์™€ ์ฒด๋ ฅ ์ˆ˜์ค€์„ ๊ณ ๋ คํ•œ ๋งž์ถคํ˜• ๊ฑท๊ธฐ ์†”๋ฃจ์…˜์„ ์ œ๊ณตํ•˜์—ฌ
๊ธฐ์กด ๋งŒ๋ณด๊ธฐ ์•ฑ๊ณผ ๋‹ฌ๋ฆฌ AI๊ฐ€ ์‚ฌ์šฉ์ž๋ณ„ ์ตœ์ ํ™”๋œ ํ™œ๋™์„ ์ œ์•ˆํ•ฉ๋‹ˆ๋‹ค.


๐Ÿ“Œ ํ”„๋กœ์ ํŠธ ๊ฐœ์š”


๐ŸŽฏ ํ”„๋กœ์ ํŠธ ๋ชฉ์ 

ํ˜„๋Œ€์ธ๋“ค์˜ ์šด๋™ ๋ถ€์กฑ๊ณผ ๊ฑด๊ฐ• ๊ด€๋ฆฌ์— ๋Œ€ํ•œ ์–ด๋ ค์›€์„ ํ•ด๊ฒฐํ•˜๊ธฐ ์œ„ํ•ด ๊ฐœ๋ฐœ๋˜์—ˆ์Šต๋‹ˆ๋‹ค.
๊ธฐ์กด์˜ ํš์ผ์ ์ธ ๊ฑด๊ฐ• ์•ฑ๋“ค๊ณผ ๋‹ฌ๋ฆฌ, ๊ฐœ์ธ์˜ ์‹ ์ฒด ์กฐ๊ฑด๊ณผ ๊ฑด๊ฐ• ์ƒํƒœ๋ฅผ ๊ณ ๋ คํ•œ ๋งž์ถคํ˜• ์ถ”์ฒœ์„ ์ œ๊ณตํ•ฉ๋‹ˆ๋‹ค.


๐Ÿ’ก ํ•ต์‹ฌ ๊ฐ€์น˜

  • ๊ฐœ์ธํ™”: ์‚ฌ์šฉ์ž์˜ ์„ฑ๋ณ„, ๋‚˜์ด, ํ‚ค, ๋ชธ๋ฌด๊ฒŒ, ์งˆ๋ณ‘ ์—ฌ๋ถ€๋ฅผ ์ข…ํ•ฉ ๋ถ„์„
  • ์ง€๋Šฅํ™”: Alan AI๋ฅผ ํ†ตํ•œ ์‹ค์‹œ๊ฐ„ ๊ฑด๊ฐ• ์ƒ๋‹ด ๋ฐ ์ฝ”์Šค ์ถ”์ฒœ
  • ๋ณด์•ˆ์„ฑ: Face ID/Touch ID ๊ธฐ๋ฐ˜ ๋ฏผ๊ฐ์ •๋ณด ๋ณดํ˜ธ
  • ํŽธ์˜์„ฑ: ์‹ค์‹œ๊ฐ„ ์œ„์ ฏ ๋™๊ธฐํ™”๋กœ ์•ฑ ์‹คํ–‰ ์—†์ด๋„ ๋ฐ์ดํ„ฐ ํ™•์ธ

๐Ÿ”ฅ ์ฐจ๋ณ„์ 

  • AI ๊ธฐ๋ฐ˜ ๋งž์ถค ๋ถ„์„: ๋‹จ์ˆœ ํ†ต๊ณ„๊ฐ€ ์•„๋‹Œ ๊ฐœ์ธ๋ณ„ ๊ฑด๊ฐ• ์ƒํƒœ ๋ถ„์„
  • ์ง€์—ญ ๊ธฐ๋ฐ˜ ์ฝ”์Šค ์ถ”์ฒœ: ๊ณต๊ณต๋ฐ์ดํ„ฐ์™€ ์‹ค์‹œ๊ฐ„ ์œ„์น˜ ์ •๋ณด๋ฅผ ํ™œ์šฉํ•œ ์‹ค์ œ ๊ฑท๊ธฐ ์ฝ”์Šค ์ œ์•ˆ
  • ๋Œ€ํ™”ํ˜• ๊ฑด๊ฐ• ์ƒ๋‹ด: ๊ฑท๊ธฐ ์ „๋ฌธ ์ฑ—๋ด‡์„ ํ†ตํ•œ ์‹ค์‹œ๊ฐ„ ๊ฑด๊ฐ• ์กฐ์–ธ
  • ์œ ์—ฐํ•œ ๋ชฉํ‘œ ๊ด€๋ฆฌ: ๋‚ ์งœ๋ณ„๋กœ ๋‹ค๋ฅธ ๋ชฉํ‘œ ๊ฑธ์Œ ์ˆ˜ ์„ค์ • ๊ฐ€๋Šฅ

๐Ÿ“ธ ์ฃผ์š” ํ™”๋ฉด


๐Ÿ‘‹ ์˜จ๋ณด๋”ฉ ๐Ÿ“Š ๋Œ€์‹œ๋ณด๋“œ ํƒญ ๐Ÿ“… ์บ˜๋ฆฐ๋” ํƒญ ๐Ÿ’ก ๋งž์ถค์ผ€์–ด ํƒญ ๐Ÿค– Alan AI ์ฑ—๋ด‡ ๐Ÿ‘ค ํ”„๋กœํ•„ ํƒญ
onboarding.png dashboard.png calendar.png personal.png chatbot.png profile.png

โœจ ์ฃผ์š” ๊ธฐ๋Šฅ


๊ธฐ๋Šฅ ์„ค๋ช…
๐Ÿ“Š ์Šค๋งˆํŠธ ์ฐจํŠธ ์ฃผ๊ฐ„ยท์›”๊ฐ„ ๋ถ„์„ + ๋‚˜์ด๋Œ€๋ณ„ ์ •์ƒ๋ฒ”์œ„ ๋น„๊ต
๐Ÿ“… ์œ ์—ฐํ•œ ๋ชฉํ‘œ ๊ด€๋ฆฌ ๋‚ ์งœ๋ณ„ ๋‹ค๋ฅธ ๋ชฉํ‘œ ์„ค์ • + ๋ฌดํ•œ ์Šคํฌ๋กค ์บ˜๋ฆฐ๋”
๐Ÿ—บ ์œ„์น˜ ๊ธฐ๋ฐ˜ ์ฝ”์Šค ์ถ”์ฒœํ˜„์žฌ ์œ„์น˜ ๊ฑฐ๋ฆฌ ๊ณ„์‚ฐ + Apple ์ง€๋„ ์—ฐ๋™
๐Ÿค– AI ์ „๋ฌธ ์ƒ๋‹ด ์‹ ์ฒด ์กฐ๊ฑด ๊ธฐ๋ฐ˜ ๋งž์ถค ๋ถ„์„ + ๊ฑท๊ธฐ ์ „์šฉ ์ฑ—๋ด‡
๐Ÿ”’ ์ƒ์ฒด ์ธ์ฆ ๋ณด์•ˆ Face ID/Touch ID ๊ธฐ๋ฐ˜ ๋ฏผ๊ฐ์ •๋ณด ๋ณดํ˜ธ
๐Ÿ“ฑ ์‹ค์‹œ๊ฐ„ ์œ„์ ฏ ์•ฑ ๋ฏธ์‹คํ–‰์‹œ์—๋„ ์‹ค์‹œ๊ฐ„ ๊ฑธ์Œ ์ˆ˜ ๋™๊ธฐํ™”

๐ŸŽฏ ์„ธ๋ถ€ ๊ธฐ๋Šฅ ํŠน์ง•


๐Ÿ“ฑ ์‚ฌ์šฉ์ž ๊ฒฝํ—˜

  • ๋‹จ๊ณ„๋ณ„ ๊ฐ€์ด๋“œ: ์˜จ๋ณด๋”ฉ ํŽ˜์ด์ง€ ์™„๋… ํ›„ ๋‹ค์Œ ๋‹จ๊ณ„ ์ง„ํ–‰
  • ์ž…๋ ฅ ๊ฒ€์ฆ: ํ—ˆ์šฉ ๋ฒ”์œ„ ์ดˆ๊ณผ์‹œ ์นœ์ ˆํ•œ ์•ˆ๋‚ด ๋ฉ”์‹œ์ง€
  • ํ–…ํ‹ฑ ํ”ผ๋“œ๋ฐฑ: ๋ฒ„ํŠผ ๊ธธ๊ฒŒ ๋ˆ„๋ฅด๊ธฐ๋กœ ๋น ๋ฅธ ์ˆ˜์น˜ ์กฐ์ •
  • ์ฆ‰์‹œ ๋ฐ˜์˜: ์„ค์ • ๋ณ€๊ฒฝ์‚ฌํ•ญ์˜ ์‹ค์‹œ๊ฐ„ ํ™”๋ฉด ์—…๋ฐ์ดํŠธ

๐Ÿ” ๋ณด์•ˆ ๋ฐ ํ”„๋ผ์ด๋ฒ„์‹œ

  • ์ƒ์ฒด ์ธ์ฆ: ๋ฏผ๊ฐํ•œ ์‹ ์ฒด์ •๋ณด ์ˆ˜์ •์‹œ Face ID/Touch ID ์š”๊ตฌ
  • ์ž๋™ ๋งˆ์Šคํ‚น: ์ฑ—๋ด‡ ์‚ฌ์šฉ์‹œ ๊ฐœ์ธ์ •๋ณด ์ž๋™ ๋น„์‹๋ณ„ํ™” ์ฒ˜๋ฆฌ
  • ๊ถŒํ•œ ๊ด€๋ฆฌ: ๋ฐ์ดํ„ฐ๋ณ„ ์„ธ๋ถ„ํ™”๋œ ์ ‘๊ทผ ๊ถŒํ•œ + ์‹œ๊ฐ์  ํ‘œ์‹œ

๐Ÿค– Alan AI ์—ญํ• 

Alan AI๋Š” Walkee์˜ ํ•ต์‹ฌ ์ง€๋Šฅํ™” ์—”์ง„์œผ๋กœ ๋‹ค์Œ๊ณผ ๊ฐ™์€ ์—ญํ• ์„ ๋‹ด๋‹นํ•ฉ๋‹ˆ๋‹ค.


๐Ÿ“‹ ๋งž์ถคํ˜• ๋ถ„์„ ๋ฆฌํฌํŠธ

  • ์›”๊ฐ„ ํ™œ๋™ ์š”์•ฝ: ๊ฑธ์Œ ์ˆ˜, ์ด๋™ ๊ฑฐ๋ฆฌ ๊ธฐ๋ฐ˜ ์ข…ํ•ฉ ๋ถ„์„ (ํ•˜๋ฃจ 1ํšŒ ๊ฐฑ์‹ )
  • ๊ฐœ์ธ๋ณ„ ๊ฑด๊ฐ• ์ƒ๋‹ด: ์„ฑ๋ณ„, ๋‚˜์ด, ์ฒดํ˜•, ์งˆ๋ณ‘ ์—ฌ๋ถ€ ๊ณ ๋ คํ•œ ๋งž์ถค ์กฐ์–ธ
  • ๋‚˜์ด๋Œ€๋ณ„ ๋น„๊ต: ๋™์—ฐ๋ น๋Œ€ ์ •์ƒ ๋ฒ”์œ„์™€ ์‚ฌ์šฉ์ž ๋ฐ์ดํ„ฐ ๋น„๊ต ๋ถ„์„

๐Ÿ—บ ์Šค๋งˆํŠธ ์ฝ”์Šค ์ถ”์ฒœ

  • ๋‚œ์ด๋„๋ณ„ ๋ถ„๋ฅ˜: ์‚ฌ์šฉ์ž ์ฒด๋ ฅ์— ๋งž๋Š” ์–ด๋ ค์›€ยท๋ณดํ†ตยท์‰ฌ์›€ ์ฝ”์Šค ์ œ์•ˆ
  • ๊ฑฐ๋ฆฌ ๊ธฐ๋ฐ˜ ์ •๋ ฌ: ํ˜„์žฌ ์œ„์น˜์—์„œ ๊ฐ€๊นŒ์šด ์ˆœ ๋˜๋Š” ์ฝ”์Šค ๊ธธ์ด์ˆœ ์ •๋ ฌ
  • ์ƒ์„ธ ์ •๋ณด ์ œ๊ณต: ์˜ˆ์ƒ ์†Œ์š”์‹œ๊ฐ„, ์ฝ”์Šค ํŠน์ง•, ์ฃผ์˜์‚ฌํ•ญ ์•ˆ๋‚ด

๐Ÿ’ฌ ๊ฑท๊ธฐ ์ „๋ฌธ ์ฑ—๋ด‡

  • ์‹ค์‹œ๊ฐ„ ์ƒ๋‹ด: ๊ฑท๊ธฐ, ๋Ÿฌ๋‹, ํŠธ๋ ˆํ‚น ๊ด€๋ จ ์ „๋ฌธ ์กฐ์–ธ
  • ๊ฐœ์ธ์ •๋ณด ๋ณดํ˜ธ: ๋ฏผ๊ฐ์ •๋ณด ์ž๋™ ๋งˆ์Šคํ‚น ์ฒ˜๋ฆฌ
  • ์™ธ๋ถ€ ๋งํฌ ์—ฐ๋™: ๊ด€๋ จ ๊ฑด๊ฐ• ์ •๋ณด ์‚ฌ์ดํŠธ๋กœ Safari ์—ฐ๊ฒฐ

๐Ÿ›  ๊ธฐ์ˆ  ์Šคํƒ


๐Ÿ“ฑ ํ”Œ๋žซํผ & ์–ธ์–ด

  • Target: iOS 15.0+
  • Language: Swift 5.9+
  • IDE: Xcode 14.0+

๐Ÿ— ์•„ํ‚คํ…์ฒ˜ & ํŒจํ„ด

  • Architecture: MVVM + Clean Architecture
  • Dependency Injection: DIContainer ๊ธฐ๋ฐ˜ ์˜์กด์„ฑ ๊ด€๋ฆฌ
  • Concurrency: Swift Concurrency (async/await) ๊ธฐ๋ฐ˜ ๋น„๋™๊ธฐ ์ฒ˜๋ฆฌ

๐Ÿ’พ ๋ฐ์ดํ„ฐ & ์ €์žฅ์†Œ

  • Health Data: HealthKit Framework
  • Local Storage: Core Data
  • Widget Sync: UserDefaults (App Group)
  • Security: Keychain Services + Biometric Authentication

๐Ÿค– AI & ์™ธ๋ถ€ ์„œ๋น„์Šค

  • AI Engine: Alan AI
  • Location: Core Location + Apple Maps Integration
  • Public Data: ๊ณต๊ณต๋ฐ์ดํ„ฐ ํฌํ„ธ API

๐ŸŽจ UI & ์‚ฌ์šฉ์ž ๊ฒฝํ—˜

  • UI Framework: UIKit
  • Widget: WidgetKit (์‹ค์‹œ๊ฐ„ ๋™๊ธฐํ™”)
  • Charts: Custom Chart Implementation
  • Calendar: Custom Infinite Scroll Calendar UI

๐Ÿ› ํ”„๋กœ์ ํŠธ ๊ณ„์ธต ๊ตฌ์กฐ


๊ณ„์ธต ์ฃผ์š” ์—ญํ•  ์˜ˆ์‹œ ํŒŒ์ผ
Application ์•ฑ ์‹คํ–‰/ํ™˜๊ฒฝ์„ค์ • AppDelegate, SceneDelegate, AppConfiguration
Core ๊ณตํ†ต ์œ ํ‹ธ/๋ณด์•ˆ/DI DIContainer, CoreDataStack, KeychainWrapper
Model ๋ฐ์ดํ„ฐ ๋ชจ๋ธ UserInfoEntity, DailyStepEntity, AlanStreamingResponse, WalkingCourse
Presentation UI ํ™”๋ฉด/์ปดํฌ๋„ŒํŠธ Calendar, Dashboard, Chatbot, Onboarding, Profile
Services ๋ฐ์ดํ„ฐ ์„œ๋น„์Šค ๊ณ„์ธต HealthService, CalendarStepService, WalkingCourseService, StepSyncService
ViewModels UI์™€ ์„œ๋น„์Šค ๊ณ„์ธต์„ ์—ฐ๊ฒฐ, ๋ฐ์ดํ„ฐ ์ƒํƒœ ๊ด€๋ฆฌ CalendarViewModel, DashboardViewModel, UserInfoViewModel, AlanViewModel

๐Ÿ“Š ์ฃผ์š” ๋ฐ์ดํ„ฐ ๋ชจ๋ธ


๋ชจ๋ธ ์„ค๋ช…
UserInfoEntity ์‚ฌ์šฉ์ž ํ”„๋กœํ•„ (์„ฑ๋ณ„, ๋‚˜์ด, ํ‚ค, ๋ชธ๋ฌด๊ฒŒ, ์งˆ๋ณ‘)
DailyStepEntity ๋‚ ์งœ๋ณ„ ๊ฑธ์Œ ์ˆ˜ ๊ธฐ๋ก
GoalStepCountEntity ๋ชฉํ‘œ ๊ฑธ์Œ ์ˆ˜ ๊ธฐ๋ก (๋‚ ์งœ๋ณ„ ๋‹ค๋ฅธ ๋ชฉํ‘œ ์ง€์›)
HealthDashboardSnapshot ์œ„์ ฏ/๋Œ€์‹œ๋ณด๋“œ์šฉ ํ†ตํ•ฉ ๋ฐ์ดํ„ฐ
WalkingCourse ๊ณต๊ณต๋ฐ์ดํ„ฐ ๊ธฐ๋ฐ˜ ๊ฑท๊ธฐ ์ฝ”์Šค + ๊ฑฐ๋ฆฌ ๊ณ„์‚ฐ

๐Ÿ—‚ ๋ฐ์ดํ„ฐ ํ”Œ๋กœ์šฐ


  1. HealthKit โžก๏ธ DefaultHealthService โžก๏ธ CoreData
  2. CoreDataStack โžก๏ธ CalendarStepService / DashboardSnapshotStore
  3. Alan AI SSE โžก๏ธ AlanStreamingResponse ํŒŒ์‹ฑ โžก๏ธ UI ๋ฐ˜์˜
  4. LocationPermissionService โžก๏ธ WalkingCourseService โžก๏ธ ์ง€๋„ ์ธ๋„ค์ผ ์ƒ์„ฑ
  5. SharedStore(AppGroup) โžก๏ธ WidgetKit โžก๏ธ ํ™ˆํ™”๋ฉด ์œ„์ ฏ ๊ฐฑ์‹ 

๐Ÿงช ํ…Œ์ŠคํŠธ


ํ…Œ์ŠคํŠธ ๋Œ€์ƒ ๋ฐฉ์‹
CoreDataUserService ๋”๋ฏธ ๋ฐ์ดํ„ฐ ๊ธฐ๋ฐ˜ ๋‹จ์œ„ ํ…Œ์ŠคํŠธ
DIContainer ์˜์กด์„ฑ ์ฃผ์ž… ๊ฒ€์ฆ
HealthService MockHealthService ํ™œ์šฉ
ViewModels CalendarViewModelTests (์บ˜๋ฆฐ๋” ๋ฐ์ดํ„ฐ ๊ฒ€์ฆ),
LLMRecommendationViewModelTests (AI ์ถ”์ฒœ ๋กœ์ง ๊ฒ€์ฆ) ๋“ฑ

๐Ÿ‘จโ€๐Ÿ’ป ํŒ€์›


ํŒ€์žฅ ๋ถ€ํŒ€์žฅ ํŒ€์› ํŒ€์› ํŒ€์› ํŒ€์›
image
๊น€๊ฑด์šฐ
rlarjsdn3
image
๊น€์„œํ˜„
cestbonciel
image
๊ถŒ๋„ํ˜„
kwondohyun12
image
๊น€์ข…์„ฑ
jseongee
image
๋…ธ๊ธฐ์Šน
giseungNoh
image
ํ•˜์žฌ์ค€
haejaejoon
๋Œ€์‹œ๋ณด๋“œ ํƒญ Alan AI ์ฑ—๋ด‡ ์˜จ๋ณด๋”ฉ ์บ˜๋ฆฐ๋” ํƒญ ๋งž์ถค์ผ€์–ด ํƒญ ํ”„๋กœํ•„ ํƒญ

About

๐ŸŒฑ EST iOS ๋ถ€ํŠธ์บ ํ”„ 3์กฐ ํ”„๋กœ์ ํŠธ - ์Šค๋งˆํŠธ AI ๊ฑด๊ฐ• ์•ฑ ๊ฑท๊ธฐ ์šด๋™ ์„œ๋น„์Šค ์›Œํ‚ค(Walkee)

Topics

Resources

Stars

Watchers

Forks

Releases

No releases published

Contributors 7

Languages