- 앱스토어 링크: 링크
물리미는 HealthKit 기반으로 수분 섭취를 기록하고, 목표량 관리, 루틴, 챌린지, 위젯, Apple Watch 앱까지 한 흐름으로 연결한 수분 트래커입니다.
HealthKit기반 수분 기록 및 오늘 섭취량 집계- 로그인 후
온보딩 -> HealthKit 권한 게이트 -> 메인 화면흐름 - 일일 목표량 설정 및 AI 기반 목표량 추천
- 수분 기록 히스토리, 주간 리포트, 루틴 수행률 인사이트, 루틴 액션으로 연결되는 챌린지, 루틴 관리
- 홈 화면/잠금화면 위젯과 Apple Watch 앱 지원
Swift 6.0,SwiftUI,Swift ConcurrencyTuist기반 모듈형 프로젝트HealthKit,WidgetKit,AppIntentsFirebase Analytics,Firebase CrashlyticsSwinject기반 의존성 주입
물리미는 Clean Architecture + MVVM 기준으로 레이어를 분리합니다.
App- 앱 진입점,
ContentView, 루트 조립 - iOS 앱, 위젯, watch 앱 타깃 정의
- 앱 진입점,
Presentation- SwiftUI View / ViewModel
AppCoordinator,AppSession등 화면 상태와 라우팅
Domain- Entity, UseCase, Repository 인터페이스
- UI/로컬라이제이션 의존성이 없는 비즈니스 규칙
Data- Repository 구현체, HealthKit/UserDefaults/iCloud KVS 연동
SharedDependencyInjection,Localization,DesignSystem,Persistence,Utils
Widget- 홈 화면/잠금화면 위젯과 AppIntent
SignIn
-> Onboarding
-> HealthKitPermissionGate
-> ContentView
- 루트 내비게이션은
ContentView의 단일NavigationStack에서 관리합니다. - 탭 간 공용 이동은
AppCoordinator와AppRoute로 처리합니다. - 인증 상태는
AppSession으로 관리하고, ViewModel 간 직접 결합을 줄였습니다.
| 항목 | 현재 원본 저장소 | 비고 |
|---|---|---|
| 수분 섭취 기록 | HealthKit |
앱/위젯/워치가 같은 수분 기록 기준을 봅니다. |
| 신체 정보(키/몸무게) | HealthKit |
추천 기능과 프로필 화면에서 사용합니다. |
| 목표 수분량 | iCloud KVS + App Group UserDefaults 미러 |
같은 Apple 계정 목표량 동기화용입니다. |
mainIcon |
App Group UserDefaults |
앱과 위젯이 같은 메인 심볼 설정을 공유합니다. |
| 온보딩 완료 여부 | UserDefaults |
로컬 상태입니다. |
| 루틴 | UserDefaults(JSON) |
현재는 로컬 저장 기반입니다. |
| 챌린지 배지 이력 | UserDefaults(JSON) |
완료 이력 표시용입니다. |
Mulimi/
├── AGENTS.md
├── ARCHITECTURE.md
├── README.md
├── Project/
│ ├── App/
│ │ ├── Sources/
│ │ └── Watch/
│ ├── Domain/
│ │ ├── Interfaces/
│ │ ├── SharedInterfaces/
│ │ ├── Sources/
│ │ ├── WatchInterfaces/
│ │ └── WatchSources/
│ ├── Data/
│ │ ├── Sources/
│ │ └── WatchSources/
│ ├── Presentation/
│ │ ├── Sources/
│ │ ├── Tests/
│ │ └── WatchSources/
│ ├── Widget/
│ │ ├── Sources/
│ │ └── Resources/
│ └── Shared/
│ ├── DependencyInjection/
│ ├── DesignSystem/
│ ├── Localization/
│ ├── Persistence/
│ └── Utils/
├── Docs/
│ ├── index.md
│ ├── harness-engineering.md
│ ├── quality-gates.md
│ ├── documentation-maintenance.md
│ ├── security-privacy.md
│ ├── delivery-workflow.md
│ ├── product-specs/
│ ├── exec-plans/
│ └── skills/
├── Tuist/
├── XCConfig/
└── ci_scripts/
Project/AppMulimi,WidgetExtension,MulimiWatch,MulimiWatchExtension
Project/DomainDomainLayerInterface,DomainLayerWatchDomainLayerInterface,WatchDomainLayerSharedInterfaces: 앱/워치가 같은 수분 단위, next-action, 루틴 수행률 계산을 보는 공용 소스
Project/DataDataLayer,WatchDataLayer
Project/PresentationPresentationLayer,WatchPresentationLayer
Project/Shared/DependencyInjectionDependencyInjection,WatchDependencyInjection
make setup TEAM_ID=YOUR_APPLE_DEVELOPER_TEAM_ID이 명령은 아래 작업을 순서대로 수행합니다.
XCConfig/Secrets.xcconfig생성tuist installtuist generategit hooks경로 설정
- 저장소 복제
git clone https://github.com/gaeng2y/Mulimi.git
cd Mulimi- Tuist 설치
curl https://mise.run | sh
mise install tuist- 팀 설정
XCConfig/Secrets.xcconfig.template를 복사해XCConfig/Secrets.xcconfig생성DEVELOPMENT_TEAM값을 본인 Apple Developer Team ID로 설정
- 의존성 설치 및 프로젝트 생성
tuist install
tuist generate- 생성된
Mulimi.xcworkspace를 Xcode에서 엽니다.
make hooks
make lint
make lint-fix
make arch-check
make verify처음 저장소에 들어오거나 큰 구조 변경을 시작할 때는 아래 순서를 권장합니다.
AGENTS.mdREADME.mdARCHITECTURE.mdDocs/index.md- 작업 대상 이슈
- 브랜치/PR 기준이 필요하면
Docs/delivery-workflow.md - 관련
Docs/product-specs/ - 관련
Docs/skills/ - 수정 대상 모듈의
Project.swift와 실제 구현
iOS 26.0+,watchOS 26.0+타깃을 사용합니다.- iOS 26 SDK가 포함된 Xcode가 필요합니다.
- 일부 기능은
HealthKit,iCloud,Apple Watch,WidgetKitcapability 설정이 필요합니다.