Skip to content

๐Ÿ‹๏ธ Helps you measure exercise and apply progressive overload.

License

Notifications You must be signed in to change notification settings

DgMuscle/dg-muscle-ios

Folders and files

NameName
Last commit message
Last commit date

Latest commit

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

Repository files navigation

dg-muscle-ios

ํšจ์œจ์ ์œผ๋กœ ๋น„๊ตํ•˜๊ณ  ๊ธฐ๋กํ•˜์—ฌ ์ ์ง„์  ๊ณผ๋ถ€ํ•˜๋ฅผ ์ด๋ฃจ๊ณ  ๊ทผ ์„ฑ์žฅ์„ ์ด๋ฃจ์ž๋Š” ๋ชฉ์ ์˜ ํ”„๋กœ์ ํŠธ.

Update Third Party Libraries Acknowledgments

Install swift-package-list

brew tap FelixHerrmann/tap & brew install swift-package-list

Generate Settings.bundle

swift-package-list dg-muscle-ios.xcworkspace --output-type settings-bundle --requires-license --output-path dg-muscle-ios/resources

Environment

  • xcodes: 15.4
  • ruby: 3.3.2(managed by rbenv)
  • bundler: 2.5.9
  • mise: 2024.7.4
  • tuist: 4.22.0

Tech

SwiftUI Firebase Functions Combine
UIKit Firestorage Swift Concurrency
Tuist Remote Push Notification Swinject
Github Action Widget Extension
Fastlane

Basic Architecture

image

ํ”„๋ ˆ์  ํ…Œ์ด์…˜ ๊ณ„์ธต

  • ๋ทฐ(View)์™€ ๋ทฐ๋ชจ๋ธ(ViewModel) ๊ตฌ์„ฑ์š”์†Œ๋ฅผ ํฌํ•จํ•ฉ๋‹ˆ๋‹ค.
  • ์‚ฌ์šฉ์ž ์ธํ„ฐํŽ˜์ด์Šค์™€ ์• ํ”Œ๋ฆฌ์ผ€์ด์…˜๊ณผ์˜ ์ƒํ˜ธ์ž‘์šฉ์„ ๊ด€๋ฆฌํ•ฉ๋‹ˆ๋‹ค.
  • ๋„๋ฉ”์ธ ๊ณ„์ธต์œผ๋กœ ์š”์ฒญ์„ ๋ณด๋‚ด๊ณ , ์‘๋‹ต์„ ๋ฐ›์•„ ์‚ฌ์šฉ์ž ์ธํ„ฐํŽ˜์ด์Šค๋ฅผ ์—…๋ฐ์ดํŠธํ•ฉ๋‹ˆ๋‹ค.

๋„๋ฉ”์ธ ๊ณ„์ธต

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

๋ฐ์ดํ„ฐ ๊ณ„์ธต

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

์˜์กด์„ฑ ๋ฐฉํ–ฅ

  • ๊ฐ ๊ณ„์ธต์€ ์ž์‹  ๋ฐ”๋กœ ์•„๋ž˜์— ์žˆ๋Š” ๊ณ„์ธต์—๋งŒ ์˜์กดํ•˜๊ฒŒ ํ•˜์˜€์Šต๋‹ˆ๋‹ค. ์ด๋Š” ๊ด€์‹ฌ์‚ฌ์˜ ๋ช…ํ™•ํ•œ ๋ถ„๋ฆฌ๋ฅผ ์ด‰์ง„ํ•ฉ๋‹ˆ๋‹ค.
  • ํ•œ ๊ณ„์ธต์—์„œ์˜ ๋ณ€๊ฒฝ์ด ๋‹ค๋ฅธ ๊ณ„์ธต์— ์ตœ์†Œํ•œ์˜ ์˜ํ–ฅ๋งŒ ๋ฏธ์น˜๋„๋ก ํ•ฉ๋‹ˆ๋‹ค.

์ด ์•„ํ‚คํ…์ณ๋Š” ๊ฐ ๊ตฌ์„ฑ์š”์†Œ๊ฐ„ ์ฑ…์ž„์„ ๋ช…ํ™•ํžˆ ๊ตฌ๋ถ„ํ•จ์œผ๋กœ์จ ์œ ์ง€๋ณด์ˆ˜์„ฑ๊ณผ ํ…Œ์ŠคํŠธ ๊ฐ€๋Šฅ์„ฑ์ด ๋†’์€ ์• ํ”Œ๋ฆฌ์ผ€์ด์…˜์„ ๋งŒ๋“œ๋Š” ๋ฐ ๋„์›€์„ ์ฃผ๋ฉฐ, ์†Œํ”„ํŠธ์›จ์–ด ์„ค๊ณ„์—์„œ SRP, DIP ์›์น™๋“ค์„ ์ค€์ˆ˜ํ•ฉ๋‹ˆ๋‹ค.

Module Graph

Features

Feature Purpose
Auth ํšŒ์›๊ฐ€์ž… ๋ฐ ๋กœ๊ทธ์ธ์˜ ์œ ์ €์˜ ์ธ์ฆ ๊ด€๋ฆฌ
History ์œ ์ €์˜ ์šด๋™์ผ์ง€ ๊ธฐ๋ก ์ถ”๊ฐ€, ์ˆ˜์ •, ์‚ญ์ œ ๋ฐ UI
Exercise ์œ ์ €์˜ ์šด๋™์ข…๋ชฉ ์ถ”๊ฐ€, ์ˆ˜์ •, ์‚ญ์ œ
Exercise Timer ์„ธํŠธ ์‚ฌ์ด ํœด์‹์‹œ๊ฐ„ ๊ด€๋ฆฌ ๋ชจ๋“ˆ
My ์œ ์ €์˜ ํ”„๋กœํ•„ ์ด๋ฏธ์ง€ ๋“ฑ๋ก ๋ฐ ๋‹‰๋„ค์ž„ ์„ค์ • ๋“ฑ ๊ทธ ์™ธ์˜ ์ž์ž˜ํ•œ ๊ธฐ๋Šฅ๋“ค ํฌํ•จ
HeatMap ์œ„์ ฏ ๋ฐ History ๋ชจ๋“ˆ์—์„œ ๊ณตํ†ต์œผ๋กœ ์‚ฌ์šฉ๋  ํžˆํŠธ๋งต UI ๊ด€๋ จ ๊ธฐ๋Šฅ
Friend ๋‹ค๋ฅธ ์œ ์ €๋“ค๊ณผ์˜ Connection ๊ตฌ์ถ•
Rapid Rapid API ๋ฅผ ์ด์šฉํ•œ Exercise DB ๊ตฌ์ถ•
Weight Apple HealthKit ์„ ์ด์šฉํ•œ ์œ ์ €์˜ ์ฒด์ค‘ ๊ด€๋ฆฌ ๋ชจ๋“ˆ

CI/CD

  • Github Action์„ ํ™œ์šฉํ•˜์—ฌ ๋ฉ”์ธ branch์— ์ฝ”๋“œ๊ฐ€ ๋ถ™๊ธฐ์ „ ๋นŒ๋“œ ๋ฐ ํ…Œ์ŠคํŠธ ์ผ€์ด์Šค๋ฅผ ๊ฒ€์ฆ
  • ๋ฐฐํฌ์šฉ ์ธ์ฆ์„œ ๋ฐ ํ”„๋กœ๋น„์ €๋‹ ํ”„๋กœํŒŒ์ผ์„ Private Repository(storage: git)์— ์ €์žฅ
  • match๋ฅผ ํ™œ์šฉํ•˜์—ฌ storage๋กœ ๋ถ€ํ„ฐ ํ•„์š”ํ•œ ํ”„๋กœ๋น„์ €๋‹ ํ”„๋กœํŒŒ์ผ ๋‹ค์šด
  • ๋‹ค์šด ๋ฐ›์€ ํ”„๋กœํŒŒ์ผ์„ ์ด์šฉํ•˜์—ฌ ์•ฑ ๋นŒ๋“œ
  • App Store Connect API ์ธ์ฆ
  • ํ…Œ์ŠคํŠธ ํ”Œ๋ผ์ดํŠธ ๋ฐฐํฌ

About

๐Ÿ‹๏ธ Helps you measure exercise and apply progressive overload.

Resources

License

Stars

Watchers

Forks

Packages

No packages published