Skip to content

prgrms-be-devcourse/NBE7-9-3-Team05

Folders and files

NameName
Last commit message
Last commit date

Latest commit

 
 
 
 
 
 
 
 
 
 
 
 
 

Repository files navigation

🏋️ Together Motionit

혼자서는 포기하기 쉬운 홈트레이닝을 같은 영상으로 동료들과 함께 운동하며 도전하고, 진행 상황을 공유하고 서로 응원하며 운동 습관을 형성해 나가는 AI & 소셜 운동 챌린지 서비스

※ 본 프로젝트는 Java 기반에서 Kotlin 기반으로 전환되었습니다.


📌 프로젝트 개요

  • 프로젝트 이름: Together Motionit
  • 한줄 요약: AI와 소셜 기능을 결합한 홈트 챌린지 플랫폼

🛠️ 기술 스택


👥 팀원 소개

정한영 김나현 김현수 박민형 이민우 이혜지
FE·BE FE·BE FE·BE FE·BE FE·BE FE·BE
팀장
JPA Entity 설계
운동방 참여/탈퇴
미션 영상 게시
YouTube API 연동
모니터링 환경 구축
k6 부하테스트 결과 분석
코틀린 전환
프로젝트 발표
좋아요 기능 구현
중복 방지 로직
코틀린 전환
댓글 CRUD
욕설 필터링 구현
코틀린 전환
공통 클래스 설계
CICD 구축
Blue Green 무중단 배포
JWT 로그인
AI 메시지
내정보 페이지
운동방 CRUD
WebSocket 처리
코틀린 전환
Jacoco 코드 커버리지 테스트 설계
소셜로그인
(OAuth2.0)
인증/인가
토큰 갱신 로직
코틀린 전환

🧩 주요 기능

  • 운동방 생성 및 관리
  • 방 참여 및 목록/검색 기능
  • 챌린지 참여자 관리 로직
  • 댓글 작성/조회/수정/삭제(욕설 필터링 포함)
  • 댓글 좋아요 기능
  • JWT 인증 및 권한 분리, OAuth2 소셜 로그인, Access Token 재발급 로직
  • YouTube Data API 연동
  • AI 응원 메시지 자동 생성(OpenAI API 연동)
  • WebSocket 실시간 기능
  • Blue Green 무중단 배포
  • Jacoco 코드 커버리지 측정

📝 유저 스토리

🏠 운동방 관리 (R-1 ~ R-5, R-10)
  • R-1 [운동방 개설]

    • 유저는 운동방을 개설할 수 있다.
    • 유튜브 운동 영상 첨부
    • 참여 인원 제한
    • 카테고리 설정(홈트, 요가 등)
    • 제목, 설명
    • 운동 기간 설정
  • R-2 [운동방 삭제]

    • 유저는 자신이 개설한 운동방을 삭제할 수 있다.
  • R-3 [운동방 조회]

    • 유저는 현재 개설된 모든 운동방을 조회할 수 있다.
  • R-4 [운동방 참여]

    • 유저는 운동방 정원이 남아 있을 때 운동방에 참여할 수 있다.
  • R-5 [운동방 참가자 목록 조회]

    • 방 참여자는 운동방 내 참가자 목록을 조회할 수 있다.
  • R-10 [운동방 탈퇴]

    • 방 참여자는 운동방을 탈퇴할 수 있다.
🎯 미션 관리 (R-6 ~ R-9)
  • R-6 [유튜브 영상 첨부]

    • 방 참여자는 일일미션(유튜브 영상)을 게시할 수 있다.
  • R-7 [일일 미션 완료]

    • 방 참여자는 일일미션 완료 표시를 할 수 있다.
  • R-8 [미션 완료 여부 조회]

    • 방 참여자는 다른 참여자들의 일일 미션 완료 여부를 확인할 수 있다.
💬 소셜 기능 (M-1 ~ M-3, L-1)
  • M-1 [댓글 조회]

    • 방 참여자는 운동방에 적힌 댓글을 조회할 수 있다.
  • M-2 [댓글 작성]

    • 방 참여자는 운동방에 댓글을 작성할 수 있다.
  • M-3 [댓글 수정/삭제]

    • 방 참여자는 자신이 작성한 댓글을 수정, 삭제할 수 있다.
  • L-1 [댓글 좋아요]

    • 방 참여자는 댓글에 좋아요를 할 수 있다.
👤 사용자 관리 (U-1 ~ U-3)
  • U-1 [로그인/회원가입]

    • 유저는 로그인/회원가입을 통해 서비스 이용 자격을 얻을 수 있다.
  • U-2 [내 정보 조회]

    • 유저는 로그인 후 자신의 정보를 조회할 수 있다.
  • U-3 [정보 수정]

    • 유저는 자신의 정보를 수정할 수 있다.
    • 프로필 이미지 업로드
    • 닉네임, 비밀번호 변경

🛠 아키텍처

아키텍처 다이어그램 보기
image

🗄️ ERD

ERD 다이어그램 보기
image

📘 API 명세

API 명세서 링크

📄 API 명세서 바로가기


🚀 Blue–Green 무중단 배포

GitHub Actions → Docker → EC2 환경에서
Blue–Green 전략을 이용한 무중단 배포

  • Blue / Green 두 컨테이너를 번갈아 가동
  • 신규 버전 헬스체크 성공 시 NGINX가 트래픽 전환
  • 장애 시 이전 버전으로 즉시 롤백 가능

🧪 JaCoCo 코드 커버리지 측정

PR 생성 시 GitHub Actions가 자동으로 테스트를 실행
JaCoCo 커버리지를 계산해 PR에 댓글로 출력

  • Line / Branch Coverage 자동 측정
  • 테스트 누락 구간 시각화
  • 코드 품질 관리에 활용

🖥️ 모니터링 환경 구성

  • 대시보드는 커스텀으로 구현
운영서버 모니터링 화면
image
로컬환경 단일 API 부하테스트 결과 모니터링 화면
스크린샷 2025-11-19 19 24 07
부하테스트 시행 결과 xk6 리포트
image

🧭 개발 컨벤션

브랜치 전략

브랜치 설명 예시
main 프로덕션 배포 브랜치 main
feat/* 기능 단위 작업 브랜치 feat/login-api
fix/* 버그 수정 브랜치 fix/token-expire
refactor/* 리팩토링 작업 브랜치 refactor/service-layer

작업 흐름

  1. GitHub Issue 생성 - 작업 내용 정의
  2. 브랜치 생성 - main에서 작업 브랜치 생성
  3. 개발 작업 - 기능 구현 및 커밋
  4. Pull Request - main으로 PR 생성
  5. 코드 리뷰 - 팀원 리뷰 및 피드백
  6. Merge - 승인 후 main에 병합

커밋 컨벤션

feat:     새로운 기능 추가
fix:      버그 수정
refactor: 코드 리팩토링
docs:     문서 수정
style:    코드 포맷팅
test:     테스트 코드
chore:    빌드 작업, 패키지 관리

커밋 메시지 예시

feat: 운동방 생성 API 구현
fix: JWT 토큰 만료 오류 수정
refactor: 댓글 서비스 로직 개선

About

프로그래머스 데브코스 7기 9회차 5팀 3차 프로젝트입니다.

Resources

Stars

Watchers

Forks

Releases

No releases published

Packages

No packages published

Contributors 6