건강한 일상을 위한 나만의 스마트 헬스 리포트 플랫폼
✏ 프로젝트명
- VITA(비타)
💖 서비스 소개
-
스마트 워치는 언제 어디서나 당신의 일상을 추적하고 기록합니다. 자신에 대해 더 많이 알수록 적절히 대처할 수 있는 힘도 커지는 법이죠. 스마트 헬스 리포트 비타는 스마트 워치로부터 수집한 건강 데이터를 보다 잘 파악할 수 있도록 도와줍니다.
건강 상태를 일목요연하게 👀
자신의 신체 활동을 살펴보고, 수면 패턴을 더 깊이 이해하고, 평균 심박수를 확인해보세요.
건강 변화 추세를 정확하게 📈
자신의 건강 데이터가 어떻게 변화해왔는지 그래프로 보여줍니다. 스마트 워치를 처음 착용한 순간부터 지금까지 수집된 모든 건강 기록을 한 눈에 확인할 수 있습니다.
나 뿐만 아니라 내 친구들까지 한눈에 👬
시각화된 나의 건강 데이터를 혼자만 보면 재미 없죠. 친구를 맺은 다른 사용자들과 나의 데이터를 하나의 차트로 비교할 수 있고, 랭킹도 표시합니다.
✨ 서비스 특징
- 스마트 워치로 수집한 건강 빅데이터를 사용자가 업로드 시, 이를 분산 처리해 나만의 헬스 리포트로 시각화
- 갤럭시 워치와 애플 워치 사용자 간 기기 제약 없는 데이터 비교 가능
👤 서비스 대상
- 나의 데이터를 분석해 건강관리를 하고 싶은 스마트 워치 사용자
☝🏻 주요 기능
- 헬스 리포트
- 랭킹 시스템
- 히스토리
🎠 배포 환경
- URL : https://j8b206.p.ssafy.io/
- 포팅 메뉴얼
🗓 진행 일정
- 23.02.20 ~ 23.04.07 (총 6주)
🚩 프로젝트 요약
Application | Domain | Language | Framework |
---|---|---|---|
✅ Desktop Web | 🔲 AI | ✅ JavaScript | ✅ Vue.js |
🔲 Mobile Web | ✅ Big Data | 🔲 TypeScript | 🔲 React |
🔲 Responsive Web | 🔲 Blockchain | 🔲 C/C++ | 🔲 Angular |
🔲 Android App | 🔲 IoT | 🔲 C# | 🔲 Node.js |
🔲 iOS App | 🔲 AR/VR/Metaverse | ✅ Python | ✅ Flask/Django |
🔲 Desktop App | 🔲 Game | ✅ Java | ✅ Spring/Springboot |
👨 팀 소개 - 🍋비타오백🍋
차현경 | 김아영 | 김진호 | 박서윤 | 이강윤 |
---|---|---|---|---|
- 스마트 워치에서 수집된 사용자의 건강 빅데이터를 분석해 시각화
- 한 페이지에 담긴 나의 헬스 리포트를 pdf로 추출
- 사용자가 휴대폰에서 .zip 파일 형태로 다운로드 받은 자신의 건강 데이터 업로드 시 자동 프로세싱 후 분석
1️⃣ MyData
- 스마트 워치로 수집한 주요 건강 지표인 체중, 걸음수, 활동에너지, 심박변이, 수면 데이터를 다양한 그래프로 시각화
- 분석한 데이터를 기반으로 종합 건강 점수, 건강 지표별 개별 건강 점수를 부여
- 일별, 주별, 월별 단위로 그래프 기간 설정 가능
- 현재 데이터를 과거와 비교해 나의 건강 변화 추세 확인
2️⃣ Friend
- 갤럭시 워치, 애플 워치 기종에 상관 없는 데이터 비교 가능
- 친구들을 선택한 후 비교하기 버튼 클릭 시 나와 친구들의 데이터를 하나의 그래프로 비교 가능
- 각 건강 지표별 랭킹 기능 제공
3️⃣ People
- 통계 자료와 VITA 유저들의 데이터에 기반한 평균값을 기준으로 나의 건강 데이터 비교
- 전체 or 나의 연령 & 성별에 기반한 맞춤형 비교
4️⃣ PDF 다운로드
- 한 페이지에 담긴 나의 헬스 리포트 PDF로 추출
- 저장된 PDF는 자동으로 마이페이지 > 히스토리에 기록
- 친구로 등록된 다른 사용자들과 나의 종합 점수를 기반으로 랭킹 부여
- 사용자의 휴대폰으로부터 추출한 건강 데이터 파일 업로드
- PDF로 추출한 나의 헬스 리포트 기록 모아보기
- 추출한 날짜와 달력을 연동하여 날짜별 히스토리 기록 확인
- 출석, 데이터 입력 횟수, 종합 건강 점수를 기준으로 한 뱃지를 제공
[ Backend ]
- Java 11
- MySQL `8.0.30`
- SpringBoot `2.7.9`
- Spring Data JPA `2.7.9`
- Gradle `7.5`
- Lombok `1.18.26`
- Swagger `2.9.2`
- Spring Security `2.7.9`
- JWT `0.11.2`
- Python `3.10.10`
- Spark `3.2.1`
[ Frontend ]
- npm `9.5.0`
- node `18.15.0`
- vue `5.0.8`
- vuex `3.6.2`
- bootstrap `5.2.3`
- bootstrap-vue `2.23.1`
- amchart `5.3.7`
- apexchart `1.6.2`
- html2canvas `1.4.1`
- wijmo `5.20222.877`
- vue-carousel-3d `1.0.1`
- v-calendar `2.4.1`
[ DB ]
- MySQL `8.0.30`
[ BigData ]
- Python `3.10.10`
- Flask `2.2.3`
- pyspark `3.3.2`
[ DevOps ]
- Docker
- Nginx
- Jenkins
- AWS EC2
[ Storage ]
- S3 Bucket
[ IDE ]
- IntelliJ
- VSCode
[ Team Collaboration Tool ]
- GitLab
- Notion
- JIRA
- MatterMost
- Webex
🎨 와이어프레임 🎨
📜 API 명세서 📜
Frontend
**[ Front ]**
├─build
│ ├─badge
│ ├─css
│ ├─img
│ ├─js
│ ├─main
│ ├─upload-guide
│ ├─user
│ ├─user-avatar
│ ├─wearable
│ └─wearable-friend
├─config
├─public
│ ├─badge
│ ├─main
│ ├─upload-guide
│ ├─user
│ ├─user-avatar
│ ├─wearable
│ └─wearable-friend
└─src
├─api
├─assets
├─components
│ ├─common
│ ├─friend
│ ├─user
│ │ └─oauth
│ ├─wearable
│ ├─wearable_api
│ └─wearable_friend
├─router
├─store
│ └─modules
└─views
├─friend
├─mypage
└─wearable
Backend
**[ User ]**
├─.gradle
│ └─7.6.1
│ └─vcsMetadata
├─gradle
│ └─wrapper
└─src
├─main
│ ├─java
│ │ └─com
│ │ └─ssafy
│ │ └─vitauser
│ │ ├─common
│ │ ├─config
│ │ │ ├─properties
│ │ │ └─security
│ │ ├─controller
│ │ │ ├─auth
│ │ │ ├─mypage
│ │ │ └─user
│ │ ├─dto
│ │ │ └─mypage
│ │ ├─entity
│ │ │ ├─auth
│ │ │ └─user
│ │ ├─oauth
│ │ │ ├─entity
│ │ │ ├─exception
│ │ │ ├─filter
│ │ │ ├─handler
│ │ │ ├─info
│ │ │ │ └─impl
│ │ │ ├─repository
│ │ │ ├─service
│ │ │ └─token
│ │ ├─repository
│ │ │ └─mypage
│ │ ├─service
│ │ │ └─mypage
│ │ └─util
│ └─resources
└─test
└─java
└─com
└─ssafy
└─vitauser
**[ Friend ]**
├─.gradle
│ └─7.6.1
│ └─vcsMetadata
├─gradle
│ └─wrapper
└─src
├─main
│ ├─java
│ │ └─com
│ │ └─ssafy
│ │ └─vitafriend
│ │ ├─config
│ │ ├─controller
│ │ ├─dto
│ │ ├─entity
│ │ ├─repository
│ │ ├─service
│ │ └─util
│ └─resources
└─test
└─java
└─com
└─ssafy
└─vitafriend
**[ Wearable ]**
├─.gradle
│ ├─7.6.1
│ │ ├─checksums
│ │ ├─dependencies-accessors
│ │ ├─executionHistory
│ │ ├─fileChanges
│ │ └─fileHashes
│ ├─buildOutputCleanup
│ └─vcs-1
├─.idea
│ └─modules
├─build
│ ├─classes
│ │ └─java
│ │ └─main
│ │ └─com
│ │ └─ssafy
│ │ └─vitawearable
│ │ ├─config
│ │ ├─controller
│ │ ├─dto
│ │ │ ├─Energy
│ │ │ ├─pdf
│ │ │ ├─Rhr
│ │ │ ├─Sleep
│ │ │ ├─Step
│ │ │ ├─Stress
│ │ │ └─Weight
│ │ ├─entity
│ │ │ └─oauth
│ │ ├─repo
│ │ ├─service
│ │ └─util
│ ├─resources
│ │ └─main
│ └─tmp
│ └─compileJava
├─gradle
│ └─wrapper
├─out
│ └─production
│ └─resources
└─src
└─main
├─java
│ └─com
│ └─ssafy
│ └─vitawearable
│ ├─config
│ ├─controller
│ ├─dto
│ │ ├─Energy
│ │ ├─pdf
│ │ ├─Rhr
│ │ ├─Sleep
│ │ ├─Step
│ │ ├─Stress
│ │ └─Weight
│ ├─entity
│ │ └─oauth
│ ├─repo
│ ├─service
│ └─util
└─resources
**[ Spark ]**
├─gradle
│ └─wrapper
└─src
├─main
│ ├─java
│ │ └─com
│ │ └─ssafy
│ │ └─vitabigdata
│ │ ├─config
│ │ ├─controller
│ │ └─service
│ └─resources
└─test
└─java
└─com
└─ssafy
└─vitabigdata
**[ Api-Gateway ]**
├─.gradle
│ └─7.6.1
│ └─vcsMetadata
├─gradle
│ └─wrapper
└─src
├─main
│ ├─java
│ │ └─com
│ │ └─ssafy
│ │ └─apigateway
│ └─resources
└─test
└─java
└─com
└─ssafy
└─apigateway