FitMate는 AI 기술을 활용한 개인 맞춤형 운동 플랫폼입니다. 사용자의 신체 정보, 운동 경험, 목표를 분석하여 최적의 운동 프로그램을 제공하고, 실시간 알림과 자세 인식 기반 코칭으로 지속적인 운동 습관 형성을 돕습니다.
┌─────────────────┐ ┌──────────────────┐ ┌──────────────────┐
│ Frontend │ │ Backend │ │ Communication │
│ (React) │◄──►│ (Spring Boot) │◄──►│ Server │
│ │ │ │ │ (NestJS) │
└─────────────────┘ └──────────────────┘ └──────────────────┘
│ │ │
▼ ▼ ▼
┌─────────────────┐ ┌──────────────────┐ ┌──────────────────┐
│ MongoDB │ │ Redis Cache │ │ Twilio SMS │
│ (User Data) │ │ (Session) │ │ (Notifications)│
└─────────────────┘ └──────────────────┘ └──────────────────┘
- React 18 - 사용자 인터페이스
- TypeScript - 타입 안정성
- Vite - 빌드 도구
- Socket.IO Client - 실시간 통신
- Pose Detection - 자세 인식
- Spring Boot 3 - 메인 백엔드
- Spring Security - 인증/인가
- Spring Data JPA - 데이터 접근
- JWT - 토큰 기반 인증
- OAuth2 - 소셜 로그인 (Google, Kakao, Naver)
- Redis - 세션 캐싱
- NestJS - 실시간 통신 서버
- Socket.IO - WebSocket 통신
- MongoDB - 채팅/알림 데이터
- Twilio - SMS 알림 서비스
- @nestjs/schedule - 스케줄러
- MongoDB - 채팅, 알림, 운동 데이터
- MySQL/PostgreSQL - 사용자, 운동 기록 데이터
- Redis - 세션, 캐시 데이터
- Docker - 컨테이너화
- Docker Compose - 멀티 컨테이너 관리
- Git - 버전 관리
- 회원가입/로그인 - OAuth2 소셜 로그인 지원
- 프로필 관리 - 개인 정보 및 운동 목표 설정
- 온보딩 - 초기 신체 정보 및 운동 경험 입력
- 권한 관리 - 일반 사용자, 관리자 역할
- 개인 맞춤 운동 - 신체 정보 기반 AI 추천
- 운동 난이도 조절 - 경험 수준에 따른 자동 조정
- 목표 기반 프로그램 - 체중 감량, 근력 향상 등 목표별 맞춤
- 실시간 피드백 - 자세 인식을 통한 운동 가이드
- 운동 일지 - 일일 운동 기록 및 통계
- 진도 추적 - 운동 성과 및 개선도 측정
- 목표 달성 - 단계별 목표 설정 및 달성 확인
- 운동 히스토리 - 과거 운동 데이터 분석
- SMS 알림 - Twilio 기반 문자 메시지
- 사이트 알림 - 실시간 웹 알림
- 스케줄러 - 자동 알림 발송 시스템
- 알림 설정 - 사용자별 알림 선호도 관리
- 1:1 채팅 - 개인 메시지
- 그룹 채팅 - 운동 그룹 대화
- 관리자 상담 - 고객 지원 채팅
- 실시간 알림 - 메시지 수신 알림
- 웹캠 기반 포즈 인식 - MediaPipe Pose 사용
- 실시간 오버레이 - 관절점/라인 시각화
- 운동 분석/카운트 - 스쿼트/런지/푸시업/플랭크/카프 레이즈 지원
- 대시보드 연동 - 메인에서 ‘운동 시작하기’ 클릭 시 바로 모션 코칭 진입
- 운동 통계 - 개인 운동 데이터 분석
- 성과 리포트 - 주간/월간 운동 요약
- AI 인사이트 - 운동 패턴 분석 및 개선 제안
- 목표 진행도 - 목표 달성률 시각화
- MET 데이터 매핑 - CSV 기반 MET 값 및 강도 매핑 자동화
- 초기 운동 세트 제공 - 헬스장에서 수행 가능한 대표 운동 내장
- 수동 업데이트 없음 - 외부 Wger API 연동 제거로 네트워크 의존성 최소화
- MotionCoach 통합:
frontend/src/components/MotionCoach.tsxPoseDetector의 포즈 인식/오버레이/운동 분석 기능을MotionCoach로 통합.- 대시보드의 ‘운동 시작하기’ 버튼에서 바로 진입하도록 연결.
- UI/스타일 정리:
MotionCoach.css,pose-detection/PoseDetector.css- 시작 버튼, 분석 패널, 디버그 패널 스타일 정비.
- Docker 리소스 정리 가이드 및 실행
- 안전 프룬 명령으로 미사용 볼륨/네트워크/컨테이너/이미지 정리.
POST /sms/send- 기본 SMS 발송POST /sms/workout-recommendation- 운동 추천 SMSPOST /sms/custom- 맞춤형 SMSPOST /sms/health- SMS 서비스 상태 확인POST /sms/request-otp- OTP 인증 코드 요청POST /sms/verify-otp- OTP 인증 코드 검증
POST /api/notifications/create- 알림 생성GET /api/notifications/user/:userId- 사용자 알림 조회PUT /api/notifications/:id/read- 알림 읽음 처리GET /api/notifications/user/:userId/unread-count- 읽지 않은 알림 개수
- SMS 발송 성공률 - Twilio API 응답 확인
- 스케줄러 실행 상태 - Cron 작업 실행 로그
- WebSocket 연결 상태 - 실시간 통신 상태
- 데이터베이스 연결 - MongoDB 연결 상태
- JWT 인증: 토큰 기반 사용자 인증
- CORS 설정: 허용된 도메인만 접근 (개발 외 환경에서 화이트리스트 사용)
- Rate Limiting: OTP 요청 등 민감 API에 요청 제한
- 대시보드에서
운동 시작하기버튼 클릭 → 모션 코칭 화면 진입(/motion) - 카메라 권한 허용 후 웹캠 위로 관절 오버레이 및 실시간 분석 표시
- 기술 문의: [pjh133765@gmail.com]
FitMate - AI와 함께하는 건강한 운동 라이프스타일 🏃♂️💪