숨쉴수록 맑아지는 나의 마음, Spha와 함께 스트레스를 관리하세요! Spha 바로가기 Spha 자세히 보기
"숨을 쉬며 마음을 청소하고, 더 평온한 하루를 시작하세요."
Spha는 Apple Watch의 HRV 데이터(심박 변이도) 를 실시간으로 분석하여 스트레스 상태를 시각화하고, 간단한 박스 호흡법(Box Breathing) 으로 마음을 가라앉히도록 돕는 애플리케이션입니다.
애플워치의 HRV 데이터를 통해 실시간으로 스트레스 상태를 확인하고, 박스 호흡법으로 마음을 가라앉힐 수 있도록 도와줍니다. 하루 동안 쌓인 스트레스 먼지를 말끔히 청소하고, 평온하고 가벼운 마음으로 새로운 하루를 시작하세요. 우리 한번 습-하💨 해봐요. Find your calm. Take a deep Spha.
- 스트레스 시각화: 스트레스를 "마음 구슬"로 표현해 직관적인 상태 확인
- 실시간 스트레스 해소: 과부하 상태에서는 즉각적인 호흡 권장
- 장기적 관리: 일일 및 월별 스트레스 변화 통계 제공
구름 | 이수 | 앤드류 | 밀루 | 세이디 |
---|---|---|---|---|
Design | Design | Dev | Dev | Dev |
GitHub | GitHub | GitHub | GitHub | GitHub |
- Apple Watch에서 HRV 데이터를 불러와 과부하, 주의 필요, 정상, 훌륭함 네 가지 상태로 분류
- 과부하 상태 시 즉시 호흡 권장 알림 제공
- 1분 동안 들이마시기 - 멈추기 - 내쉬기 - 멈추기를 반복하며 마음을 진정
- 스트레스가 해소될 때마다 마음 구슬의 먼지가 제거되는 시각적 피드백 제공
- 일일 통계: 하루 동안의 스트레스 변화 그래프 확인
- 월별 통계: 캘린더 형태로 스트레스 추이와 마음 구슬 상태 변화 기록
- 애플 건강 앱의 마음챙기기 시간에 호흡 데이터 연동
- 스트레스 상태를 시각화해 사용자가 즉각적인 심리적 변화를 확인 가능
- 구슬의 상태 변화로 호흡 관리 필요성 직관적 전달
- Apple Watch에서 실시간 HRV 데이터를 수집
- 앱이 HRV를 분석해 스트레스 상태를 분류
- 과부하 상태 감지 시 호흡법 실행 권장 알림
- 사용자가 호흡을 진행하면 마음 구슬 상태가 청소되며 스트레스 완화
- 모든 데이터는 Apple HealthKit과 연동하여 장기적 관리 가능
원활한 앱 사용을 위해 아래 접근 권한이 필요합니다:
- 알림 권한: 스트레스 관리 및 호흡 권장 알림
- HealthKit 접근 권한: HRV 데이터 및 마음챙기기 시간 연동
※ 선택적 권한 거부 시 일부 기능 제한될 수 있습니다.
- Language: SwiftUI
- Frameworks: HealthKit
- Version Control: Git, GitHub
- Collaboration Tools: Notion, Figma, Miro, Discord
- Project Management: GitHub Issues, GitHub Projects
- Design: Figma
- Git-flow 전략을 기반으로 main, develop 브랜치와 feature 보조 브랜치를 운용했습니다.
- main, develop, Feat 브랜치로 나누어 개발을 하였습니다.
- main 브랜치는 배포 단계에서만 사용하는 브랜치입니다.
- develop 브랜치는 개발 단계에서 git-flow의 master 역할을 하는 브랜치입니다.
- Feat 브랜치는 기능 단위로 독립적인 개발 환경을 위하여 사용하고 merge 후 각 브랜치를 삭제해주었습니다.
Spha/
├─ Shared
│ ├─ Resources
│ │ ├─ MP4
│ │ └─ Font
│ │ ├─ AppleSDGothicNeoM.ttf
│ │ ├─ AppleSDGothicNeoSB.ttf
│ │ └─ AppleSDGothicNeoR.ttf
│ ├─ Managers
│ │ ├─ MindfulSessionManager
│ │ │ ├─ MindfulSessionManager.swift
│ │ │ └─ MindfulSessionTestView
│ │ │ └─ MindfulSessionTestView.swift
│ │ ├─ HealthKitManager
│ │ │ ├─ HealthKitManager.swift
│ │ │ └─ AppDelegate.swift
│ │ ├─ NotificationManager.swift
│ │ ├─ RouterManager.swift
│ │ └─ BreathingManager.swift
│ ├─ Models
│ │ ├─ DailyStressRecord.swift
│ │ ├─ BreathingPhase.swift
│ │ ├─ MindDustLevel.swift
│ │ └─ StressLevel.swift
│ ├─ Extensions
│ │ ├─ Color+.swift
│ │ ├─ Date+.swift
│ │ └─ Font+.swift
│ └─ Helper
│ └─ FilePathHelper.swift
├─ Spha
│ ├─ Managers
│ │ └─ HealthKitManager+iOS.swift
│ ├─ Assets.xcassets
│ ├─ Views
│ │ ├─ Statistics
│ │ │ ├─ DailyStatisticsViewModel.swift
│ │ │ └─ DailyStatisticsView.swift
│ │ ├─ Home
│ │ │ ├─ MP4PlayerView.swift
│ │ │ ├─ MainInfoView.swift
│ │ │ ├─ MainViewModel.swift
│ │ │ └─ MainView.swift
│ │ ├─ Breathing
│ │ │ ├─ BreathingMainViewModel.swift
│ │ │ ├─ BreathingMainView.swift
│ │ │ ├─ BreathingOutroViewModel.swift
│ │ │ └─ BreathingOutroView.swift
│ │ ├─ Onboarding
│ │ │ ├─ IndicatorViews
│ │ │ │ ├─ WatchGuide.swift
│ │ │ │ ├─ ExplainMenu.swift
│ │ │ │ ├─ HealthKitHRVAuth.swift
│ │ │ │ ├─ BreathingGuide.swift
│ │ │ │ └─ NotificationAuth.swift
│ │ │ ├─ OnboardingStartView.swift
│ │ │ └─ OnboardingContainerView.swift
│ │ └─ ContentView.swift
│ └─ SphaApp.swift
└─ SphaWatch Watch App
├─ Notification
│ ├─ PushNotificationPayload.apns
│ └─ NotificationView.swift
├─ Manager
│ ├─ HapticManager.swift
│ └─ WatchRouterManager.swift
└─ Views
├─ Home
│ ├─ WatchMainStatusViewModel.swift
│ ├─ WatchMainView.swift
│ └─ WatchMainStatusView.swift
└─ Breathing
├─ WatchBreathingExitView.swift
├─ WatchBreathingMainView.swift
├─ WatchBreathingMainViewModel.swift
├─ WatchBreathingOutroViewModel.swift
├─ WatchBreathingMP4PlayerView.swift
├─ WatchBreathingSelectionView.swift
└─ WatchBreathingOutroView.swift
└─ SphaWatchApp.swift
- 전체 개발 기간 : 2024-11-14 ~ 2024-11-24
- 기능 구현 : 2024-11-14 ~ 2024-11-17
- UI 구현 : 2024-11-18 ~ 2024-11-24
- GitHub Projects와 Issues를 사용하여 진행 상황을 공유했습니다.
- 주간회의를 진행하며 작업 순서와 방향성에 대한 고민을 나누고 Miro, Notion, Figma에 회의 내용을 기록했습니다.
https://github.com/DeveloperAcademy-POSTECH/swift-style-guide
● [작업] #이슈번호-커밋제목 Chore: #1-그냥 보통 잡일 Feat: #1-새로운 주요 기능 추가 Add: #2-파일 추가, 에셋 추가, etc Fix: #2-버그 수정 Del: #2-쓸모없는 코드, 뭐 어쩌고 삭제 Refactor: #2-코드 리팩토링 -> 결과는 똑같음. 근데 코드가 달라짐 Move: #2-프로젝트 구조 변경(폴더링 등) Rename: #2-파일, 클래스, 변수명 등 이름 변경 Docs: #2-Wiki, README 파일 수정
- 코드 리뷰 시간: 모든 Pull Request(P.R)는 24시간 이내에 코드 리뷰 완료.
- 리뷰어 배정: 최소 두 명 이상의 리뷰어가 코드를 확인하고 피드백을 제공.
- 피드백 반영: 피드백을 반영한 후, 수정된 코드에 대해 빠른 재검토와 승인을 받음.
- 긴급한 경우: 코드 리뷰가 24시간 이내에 이루어지지 않으면 팀 리더 또는 프로젝트 매니저에게 알림.
- 승인 기준: 두 명 이상의 리뷰어 승인을 받은 후 머지 가능.
- 지속적인 코드 품질: 코드 표준 준수, 코드 스타일 및 네이밍 규칙 점검.
- 성능 및 보안 점검: 성능과 보안에 영향을 미칠 수 있는 변경 사항에 대해 세밀하게 검토.
- 코드 리뷰 문화: 협업과 학습의 기회로, 건설적이고 구체적인 피드백을 주고받음.
- 테마 모듈화 및 프로토콜 관리 :테마 별 반복되는 정보 및 애니메이션 요소 관리
- 이미지 및 비디오 최적화
🌬️ 오늘도 Spha와 함께 스트레스를 비우고, 가벼운 마음으로 하루를 시작하세요! 습-하! Stress less, Spha more