Skip to content
/ SHabit Public

πŸŽ€μ˜¬λ°”λ₯Έ μžμ„Έ μŠ΅κ΄€μ„ λ§Œλ“€λ„λ‘ λ„μ™€μ£ΌλŠ” μ‚¬μ΄νŠΈ - SSAFY 8κΈ° 우수 곡톡 ν”„λ‘œμ νŠΈ

Notifications You must be signed in to change notification settings

kosy318/SHabit

Repository files navigation

SHabit - μ˜¬λ°”λ₯Έ μžμ„Έ μŠ΅κ΄€μ„ λ§Œλ“€λ„λ‘ λ„μ™€μ£ΌλŠ” μ‚¬μ΄νŠΈ

SHabit 링크(μ›Ήμ‚¬μ΄νŠΈ) : SHabit

μ†Œκ°œ μ˜μƒ 보기

UCC.mov

개발 κ³Όμ • 보기 : Notion


🌸 ν”„λ‘œμ νŠΈ μ§„ν–‰ κΈ°κ°„

2023.01.03(ν™”) ~ 2023.02.17(금) (46일간 μ§„ν–‰)


πŸŽ€ SHabit - λ°°κ²½

컴퓨터 μ•žμ— μ•‰μ•„μ„œ μΌν•˜μ‹œλ©΄μ„œ 거뢁λͺ©μ΄ λ˜μ–΄κ°€κ³ μžˆμ§€ μ•ŠμœΌμ‹ κ°€μš”? ν•˜μ§€λ§Œ 일을 ν•˜λŠ” 도쀑 μžμ„Έκ°€ ννŠΈλŸ¬μ§„ 것을 ν™•μΈν•˜κΈ°κ°€ μ‰½μ§€μ•Šμ£ !

SHabit은 μ•ˆμ’‹μ€ μžμ„Έ μŠ΅κ΄€μ„ κ³ μΉ˜λŠ” 것을 λ„μ™€μ£ΌλŠ” μ›Ήμ‚¬μ΄νŠΈμž…λ‹ˆλ‹€. SHabitκ³Ό ν•¨κ»˜λΌλ©΄, λͺ©ν‘œλ₯Ό μ„Έμ›Œ 쒋은 μžμ„Έ μŠ΅κ΄€μ„ κΈ°λ₯Ό 수 μžˆμŠ΅λ‹ˆλ‹€.


🌸 SHabit - κ°œμš”

- μ²™μΆ” 건강을 μœ„ν•œ 쒋은 μŠ΅κ΄€μ„ λ§Œλ“€μž -

SHabitλŠ” Stretching Habit의 μ•½μžμž…λ‹ˆλ‹€.
SHabit은 μ‚¬μš©μžμ˜ μžμ„Έλ₯Ό νŠΈλž˜ν‚Ήν•˜μ—¬ μ˜¬λ°”λ₯΄μ§€ μ•Šμ€ μžμ„Έλ₯Ό μœ μ§€ν•  μ‹œ κ²½κ³ ν•΄μ£Όκ³ , 쒋은 μŠ΅κ΄€μ„ μœ„ν•΄ μ •ν•΄μ§„ μ‹œκ°„λ§ˆλ‹€ μŠ€νŠΈλ ˆμΉ­μ„ μΆ”μ²œν•˜μ—¬ μŠ΅κ΄€μ„ κ³ μΉ˜λŠ” 데에 도움을 μ£ΌλŠ” μ›Ήμ„œλΉ„μŠ€μž…λ‹ˆλ‹€.

개인이 컴퓨터λ₯Ό μ‚¬μš©ν•  λ•Œ μžμ„Έκ°€ μ‰½κ²Œ ννŠΈλŸ¬μ§„λ‹€λŠ” 점을 κ³ λ €ν•˜μ—¬ SHabit은 개인이 μ‚¬μš©ν•˜λŠ” μ›Ήμ‚¬μ΄νŠΈλ‘œ κ°œλ°œλ˜μ—ˆμŠ΅λ‹ˆλ‹€. λ”°λΌμ„œ 쉽고 κ°„νŽΈν•˜κ²Œ μ‚¬μš©ν•  수 μžˆμŠ΅λ‹ˆλ‹€. λ˜ν•œ, λͺ©ν‘œλ₯Ό μ„Έμ›Œ ν˜„μž¬ μˆ˜μΉ˜μ™€ λΉ„κ΅ν•˜λ©° 경각심을 κ°€μ§ˆ 수 μžˆμŠ΅λ‹ˆλ‹€.


🌸 μ£Όμš” κΈ°λŠ₯


μžμ„Έ νŠΈλž˜ν‚Ή

- Teachable Machine을 μ‚¬μš©ν•˜μ—¬ μžμ„Έλ₯Ό νŠΈλž˜ν‚Ήν•©λ‹ˆλ‹€.
- webRTC의 getUserMedia()λ₯Ό μ‚¬μš©ν•˜μ—¬ user의 카메라에 μ ‘κ·Όν•˜κ³  mediastream recording apiλ₯Ό ν™œμš©ν•˜μ—¬ SHabit μ‚¬μš©ν•˜λŠ” λͺ¨μŠ΅μ„ λ…Ήν™”ν•©λ‹ˆλ‹€.
- μ’‹μ§€ μ•Šμ€ μžμ„Έκ°€ μ •ν•΄μ§„ μ‹œκ°„(default 3λΆ„) 이상 μ§€μ†λ˜λ©΄ κ²½κ³  μ°¨μ›μ—μ„œ 크둬 μ•Œλ¦Όμ΄ λœΉλ‹ˆλ‹€.
- μ •ν•΄μ§„ μ‹œκ°„(default 50λΆ„)λ§ˆλ‹€ 크둬 μ•Œλ¦Όμ΄ 뜨고, 이λ₯Ό ν΄λ¦­ν•˜μ—¬ μŠ€νŠΈλ ˆμΉ­μ„ μ‹œμž‘ν•  수 μžˆμŠ΅λ‹ˆλ‹€.
- μ˜μƒμ€ 3λΆ„, 5λΆ„, 10λΆ„ λ‹¨μœ„λ‘œ 제곡되며, μ „ 데이터λ₯Ό ν† λŒ€λ‘œ μ μ ˆν•œ λΆ€μœ„(거뢁λͺ©, ν—ˆλ¦¬, μ „μ‹ )의 슀트레칭 μ˜μƒμ„ μΆ”μ²œν•΄μ€λ‹ˆλ‹€.
- μžμ„Έκ°€ λ°”λ€” λ•Œλ§ˆλ‹€ μ˜μƒμ„ μΊ‘μ²˜ν•˜μ—¬ DB에 μ €μž₯ν•©λ‹ˆλ‹€.

νŠΈλž˜ν‚Ή μ’…λ£Œ

- λ‚˜κ°€κΈ° λ²„νŠΌμ„ 톡해 λ‚˜κ°ˆ 수 μžˆμŠ΅λ‹ˆλ‹€.
- 1λΆ„λ§ˆλ‹€ 1μ΄ˆμ”© 찍어진 μ˜μƒμ„ 이어 λ§Œλ“  클립을 λ³΄κ±°λ‚˜ λ‹€μš΄λ‘œλ“œ ν•  수 μžˆμŠ΅λ‹ˆλ‹€.

메인 νŽ˜μ΄μ§€

- νšŒμ› 정보, λ§ˆμ§€λ§‰ 접속일, 건강 문ꡬλ₯Ό 확인할 수 μžˆμŠ΅λ‹ˆλ‹€.
- νšŒμ›μ΄ μ ‘μ†ν•˜μ—¬ μ˜¬λ°”λ₯Έ μžμ„Έλ₯Ό μ·¨ν•œ percentageλ₯Ό λ°”νƒ•μœΌλ‘œ λ§Œλ“  heatmap(μž”λ””)을 확인할 수 μžˆμŠ΅λ‹ˆλ‹€.
- ν…Œλ§ˆμ˜ 색을 ν΄λ¦­ν•˜μ—¬ ν…Œλ§ˆ 색상을 λ³€κ²½ν•  수 μžˆμŠ΅λ‹ˆλ‹€.
- ν”„λ‘œν•„ 사진을 ν΄λ¦­ν•˜μ—¬ λ³€κ²½ν•  수 μžˆμŠ΅λ‹ˆλ‹€.

μžμ„ΈκΈ°λ‘ νŽ˜μ΄μ§€

- 상단 문ꡬλ₯Ό 톡해 였늘 총 λͺ‡ μ‹œκ°„ μ‚¬μš©ν–ˆκ³ , λͺ‡ λΆ„ λ°”λ₯Έ μžμ„Έλ₯Ό μœ μ§€ν–ˆλŠ”μ§€ μ•Œ 수 μžˆμŠ΅λ‹ˆλ‹€.
- range bar graphλ₯Ό 톡해 μ‚¬μš© μ‹œκ°κ³Ό κ·Έλ•Œ μœ μ§€ν•œ μžμ„Έλ₯Ό ν•œλˆˆμ— 확인할 수 μžˆμŠ΅λ‹ˆλ‹€.
- line graphλ₯Ό 톡해 ν•˜λ£¨ λ‹¨μœ„λ‘œ λͺ‡νΌμ„ΌνŠΈ λ°”λ₯Έ μžμ„Έλ₯Ό μœ μ§€ν–ˆλŠ”μ§€ μ•Œ 수 μžˆμŠ΅λ‹ˆλ‹€.
  - weekly와 monthly둜 κ΅¬λΆ„ν•˜μ—¬ ν•œλˆˆμ— 확인할 수 μžˆμŠ΅λ‹ˆλ‹€.
  - line graphμ—μ„œ νŠΉμ • λ‚ μ§œλ₯Ό ν΄λ¦­ν•˜λ©΄ μš°μΈ‘μ— pie graphκ°€ λ‚˜νƒ€λ‚©λ‹ˆλ‹€. ν•΄λ‹Ή 일에 μ–΄λ–€ μžμ„Έλ₯Ό λͺ‡νΌμ„ΌνŠΈ μœ μ§€ν–ˆλŠ”μ§€ μ‰½κ²Œ 확인이 κ°€λŠ₯ν•©λ‹ˆλ‹€.
- range bar graph와 line graphλŠ” svg, png, csv 파일둜 μ €μž₯ κ°€λŠ₯ν•©λ‹ˆλ‹€.

λ‚˜μ˜λͺ©ν‘œ νŽ˜μ΄μ§€

- λͺ©ν‘œ 달성 μΉΈμ—μ„œ λ‚΄κ°€ μ„€μ •ν•œ λͺ©ν‘œ(percentage, μ‹œκ°„)와 였늘 달성 정도λ₯Ό 확인할 수 μžˆμŠ΅λ‹ˆλ‹€.
  - 였λ₯Έμͺ½ 상단 μˆ˜μ • λ²„νŠΌμ„ 톡해 λͺ©ν‘œλ₯Ό 직접 μ„€μ •ν•  수 μžˆμŠ΅λ‹ˆλ‹€.
- μžμ„Έ μœ μ§€ μ‹œκ°„ μΉΈμ—μ„œλŠ” 였늘 μ‚¬μš©ν•œ 총 μ‹œκ°„ λŒ€λΉ„ μœ μ§€ν•œ μžμ„Έλ₯Ό ν•œ λˆˆμ— 확인할 수 μžˆλ„λ‘ bar graphλ₯Ό μ œκ³΅ν•˜κ³ μžˆμŠ΅λ‹ˆλ‹€.
- 이 νŽ˜μ΄μ§€λŠ” 였λ₯Έμͺ½ 상단 λ‹€μš΄λ‘œλ“œ λ²„νŠΌμ„ 톡해 νŽ˜μ΄μ§€ 이미지λ₯Ό μ†μ‰½κ²Œ μ €μž₯ν•  수 μžˆμŠ΅λ‹ˆλ‹€.

가러리

- νŠΈλž˜ν‚Ήμ„ ν•˜λ©΄μ„œ 찍은 사진듀을 확인할 수 μžˆμŠ΅λ‹ˆλ‹€.
- λ°”λ₯Έ μžμ„Έ, 거뢁λͺ© μžμ„Έ, λΉ„μŠ€λ“¬ν•œ μžμ„Έ, λˆ„μš΄ μžμ„Έλ³„λ‘œ κ΅¬λΆ„ν•˜μ—¬ λ³Ό 수 μžˆμŠ΅λ‹ˆλ‹€.

κ΄€λ¦¬μž νŽ˜μ΄μ§€

- κ΄€λ¦¬μžκ°€ λ‘œκ·ΈμΈν•˜μ—¬ 슀트레칭 μ‹œκ°„κ³Ό μ•Œλ¦Ό μ‹œκ°„μ„ λ³€κ²½ν•  수 μžˆμŠ΅λ‹ˆλ‹€.
- μƒˆλ‘œμš΄ 슀트레칭 μ˜μƒμ„ μΆ”κ°€ν•  수 μžˆμŠ΅λ‹ˆλ‹€.
- μƒˆλ‘œμš΄ 건강 문ꡬλ₯Ό μΆ”κ°€ν•  수 μžˆμŠ΅λ‹ˆλ‹€.

βœ” μ£Όμš” 기술


Backend - Spring

  • IntelliJ IDE
  • Springboot 3.0.1
  • Spring Data JPA
  • Spring Security
  • Spring Validation
  • Spring Web
  • QueryDSL
  • WebRTC
  • WebSocket
  • Redis
  • MariaDB
  • MongoDB
  • GCP
  • Swagger 3.0.0
  • JWT

Frontend

  • React
  • Redux Toolkit
  • Styled Components
  • TypeScript
  • SockJS-client
  • Teachable Machine
  • React-Webcam
  • Axios
  • ApexCharts

CI/CD

  • AWS EC2
  • AWS S3
  • Jenkins
  • NGINX

βœ” ν”„λ‘œμ νŠΈ 파일 ꡬ쑰


Back

shabit
  β”œβ”€β”€ admin
  β”‚   β”œβ”€β”€ controller
  β”‚   β”œβ”€β”€ dto
  β”‚   β”‚    β”œβ”€β”€ req
  β”‚   β”‚    └── res
  β”‚   β”œβ”€β”€ entity
  β”‚   β”œβ”€β”€ repository
  β”‚   └── service
  β”‚        └── youtube
  β”œβ”€β”€ config
  β”‚   β”œβ”€β”€ oauth
  β”‚   β”‚    β”œβ”€β”€ entity
  β”‚   β”‚    β”œβ”€β”€ exception
  β”‚   β”‚    β”œβ”€β”€ handler
  β”‚   β”‚    β”œβ”€β”€ info
  β”‚   β”‚    |    └── impl
  β”‚   β”‚    β”œβ”€β”€ repository
  β”‚   β”‚    β”œβ”€β”€ service
  β”‚   β”‚    └── utils
  β”‚   └── security
  β”œβ”€β”€ goal
  β”‚   β”œβ”€β”€ controller
  β”‚   β”œβ”€β”€ dto
  β”‚   β”‚    β”œβ”€β”€ req
  β”‚   β”‚    └── res
  β”‚   β”œβ”€β”€ entity
  β”‚   β”œβ”€β”€ repository
  β”‚   └── service
  β”œβ”€β”€ info
  β”‚   β”œβ”€β”€ controller
  β”‚   β”œβ”€β”€ dto
  β”‚   β”‚    β”œβ”€β”€ req
  β”‚   β”‚    └── res
  β”‚   β”œβ”€β”€ entity
  β”‚   β”œβ”€β”€ repository
  β”‚   └── service
  β”œβ”€β”€ jwt
  β”œβ”€β”€ statistics
  β”‚   β”œβ”€β”€ controller
  β”‚   β”œβ”€β”€ dto
  β”‚   β”‚    β”œβ”€β”€ req
  β”‚   β”‚    └── res
  β”‚   β”œβ”€β”€ entity
  β”‚   β”œβ”€β”€ repository
  β”‚   └── service
  β”œβ”€β”€ user
  β”‚   β”œβ”€β”€ controller
  β”‚   β”œβ”€β”€ dto
  β”‚   β”‚    β”œβ”€β”€ req
  β”‚   β”‚    └── res
  β”‚   β”œβ”€β”€ entity
  β”‚   β”œβ”€β”€ enums
  β”‚   β”œβ”€β”€ repository
  β”‚   └── service
  └── util

Front

shabit-front
  β”œβ”€β”€ node_modules
  β”œβ”€β”€ public
  β”‚    β”œβ”€β”€ assets
  β”‚    β”‚   └── fonts
  β”‚    └── my_model
  └── src
      β”œβ”€β”€ components
      β”‚    β”œβ”€β”€ Admin
      β”‚    β”œβ”€β”€ authTest
      β”‚    β”œβ”€β”€ Chart
      β”‚    β”œβ”€β”€ common
      β”‚    β”œβ”€β”€ Landing
      β”‚    β”œβ”€β”€ Main
      β”‚    β”œβ”€β”€ OAuth
      β”‚    β”œβ”€β”€ Posture
      β”‚    └── TeachableMachineTest
      β”œβ”€β”€ pages
      β”œβ”€β”€ services
      β”‚   β”œβ”€β”€ admin
      β”‚   |   └── get
      β”‚   β”œβ”€β”€ auth
      β”‚   |   β”œβ”€β”€ delete
      β”‚   |   β”œβ”€β”€ get
      β”‚   |   β”œβ”€β”€ post
      β”‚   |   └── put
      β”‚   β”œβ”€β”€ info
      β”‚   └── stat
      β”œβ”€β”€ store
      β”œβ”€β”€ styles
      └── utils

βœ” ν˜‘μ—… 툴


  • Git
  • Notion
  • JIRA
  • MatterMost

βœ” ν˜‘μ—… ν™˜κ²½


  • Gitlab
    • μ½”λ“œμ˜ 버전을 관리
    • gitlab flow둜 관리
    • μžλ™ 배포(main branch, dev branch-backend)
  • JIRA
    • λ§€μ£Ό λͺ©ν‘œλŸ‰μ„ μ„€μ •ν•˜μ—¬ Sprint μ§„ν–‰
    • μ—…λ¬΄μ˜ ν• λ‹ΉλŸ‰μ„ μ •ν•˜μ—¬ Story Pointλ₯Ό μ„€μ •ν•˜κ³ , In-Progress -> Done 순으둜 μž‘μ—…
  • 회의
    • μ•„μΉ¨ 슀크럼 μ§„ν–‰, 전에 ν•œ 일과 당일 ν•  업무 λΈŒλ¦¬ν•‘
    • λ§€ μ£Ό 첫 λ§Œλ‚¨λ•Œλ§ˆλ‹€ μŠ€ν”„λ¦°νŠΈ μ§„ν–‰ν•˜μ—¬ Back 진행상황과 Front 진행상황을 곡유
  • Notion
    • νšŒμ˜κ°€ μžˆμ„λ•Œλ§ˆλ‹€ νšŒμ˜λ‘μ„ κΈ°λ‘ν•˜μ—¬ 보관
    • κΈ°μˆ ν™•λ³΄ μ‹œ, λ‹€λ₯Έ νŒ€μ›λ“€λ„ μΆ”ν›„ 따라할 수 μžˆλ„λ‘ 보기 μ‰½κ²Œ μž‘μ—… μˆœμ„œλŒ€λ‘œ 정리
    • Error λ°œμƒ μ‹œ, νŒ€μ›λ“€μ΄ μΆ”ν›„ 같은 μ—λŸ¬λ‘œ κ³ μƒν•˜μ§€ μ•Šλ„λ‘ 정리
    • μ»¨λ²€μ…˜ 정리
    • ERD, μ‹œν€€μŠ€λ‹€μ΄μ–΄κ·Έλž¨, κΈ°λŠ₯λͺ…μ„Έμ„œ λ“± λͺ¨λ‘κ°€ κ³΅μœ ν•΄μ•Ό ν•˜λŠ” λ¬Έμ„œ 관리

βœ” νŒ€μ› μ—­ν•  λΆ„λ°°


βœ” ν”„λ‘œμ νŠΈ μ‚°μΆœλ¬Ό


βœ” ν”„λ‘œμ νŠΈ κ²°κ³Όλ¬Ό

🌸 SHabit μ„œλΉ„μŠ€ ν™”λ©΄


λžœλ”© νŽ˜μ΄μ§€

landingPage

둜그인 ν™”λ©΄

Login1

Login3

νšŒμ› κ°€μž… ν™”λ©΄

Signup

λΉ„λ°€λ²ˆν˜Έ μ΄ˆκΈ°ν™” ν™”λ©΄

Login2

메인 ν™”λ©΄

Main1 Main4 Main2 Main3

νŠΈλž˜ν‚Ή ν™”λ©΄

Tracking1 Tracking2 Tracking3 Tracking4

μžμ„Έ 기둝 ν™”λ©΄

History1 History2

λ‚˜μ˜ λͺ©ν‘œ ν™”λ©΄

Goal1-HQ Goal2-HQ

가러리 ν™”λ©΄

gallary-HQ

κ΄€λ¦¬μž ν™”λ©΄

admin1 admin2 admin3 admin4

About

πŸŽ€μ˜¬λ°”λ₯Έ μžμ„Έ μŠ΅κ΄€μ„ λ§Œλ“€λ„λ‘ λ„μ™€μ£ΌλŠ” μ‚¬μ΄νŠΈ - SSAFY 8κΈ° 우수 곡톡 ν”„λ‘œμ νŠΈ

Resources

Stars

Watchers

Forks

Releases

No releases published

Packages

No packages published