혼자서는 포기하기 쉬운 홈트레이닝을 같은 영상으로 동료들과 함께 운동하며 도전하고, 진행 상황을 공유하고 서로 응원하며 운동 습관을 형성해 나가는 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 [정보 수정]
- 유저는 자신의 정보를 수정할 수 있다.
- 프로필 이미지 업로드
- 닉네임, 비밀번호 변경
GitHub Actions → Docker → EC2 환경에서
Blue–Green 전략을 이용한 무중단 배포
- Blue / Green 두 컨테이너를 번갈아 가동
- 신규 버전 헬스체크 성공 시 NGINX가 트래픽 전환
- 장애 시 이전 버전으로 즉시 롤백 가능
PR 생성 시 GitHub Actions가 자동으로 테스트를 실행
JaCoCo 커버리지를 계산해 PR에 댓글로 출력
- Line / Branch Coverage 자동 측정
- 테스트 누락 구간 시각화
- 코드 품질 관리에 활용
- 대시보드는 커스텀으로 구현
| 브랜치 | 설명 | 예시 |
|---|---|---|
main |
프로덕션 배포 브랜치 | main |
feat/* |
기능 단위 작업 브랜치 | feat/login-api |
fix/* |
버그 수정 브랜치 | fix/token-expire |
refactor/* |
리팩토링 작업 브랜치 | refactor/service-layer |
작업 흐름
- GitHub Issue 생성 - 작업 내용 정의
- 브랜치 생성 -
main에서 작업 브랜치 생성 - 개발 작업 - 기능 구현 및 커밋
- Pull Request -
main으로 PR 생성 - 코드 리뷰 - 팀원 리뷰 및 피드백
- Merge - 승인 후
main에 병합
feat: 새로운 기능 추가
fix: 버그 수정
refactor: 코드 리팩토링
docs: 문서 수정
style: 코드 포맷팅
test: 테스트 코드
chore: 빌드 작업, 패키지 관리
커밋 메시지 예시
feat: 운동방 생성 API 구현
fix: JWT 토큰 만료 오류 수정
refactor: 댓글 서비스 로직 개선










