<aside> 💡
SciFit-Sync — 스포츠 과학 논문 RAG 기반 개인 맞춤형 운동 루틴 생성 모바일 앱
</aside>
기존 운동 앱들은 루틴 추천 시 과학적 근거 없이 일반적인 가이드라인만 제공합니다. SciFit-Sync는 PubMed 스포츠 과학 논문을 RAG(Retrieval-Augmented Generation) 파이프라인으로 분석하여, 사용자의 신체 정보·운동 목표·보유 기구에 맞는 근거 기반 운동 루틴을 자동 생성합니다.
| 항목 | 내용 |
|---|---|
| 과목 | 캡스톤 디자인 (2025년 1학기) |
| 개발 기간 | 2025.03 ~ 2025.06 (16주) |
| GitHub | SciFit-Sync/scifiit-sync |
| Figma | 캡스톤 와이어프레임 |
| 기능 | 설명 |
|---|---|
| 논문 기반 루틴 생성 | PubMed 스포츠 과학 논문을 RAG 파이프라인으로 검색·분석하여 근거 있는 운동 루틴을 자동 생성하고, 참고 논문 출처 카드를 첨부 |
| 도르래 비율 보정 | 케이블 머신 등 도르래 기반 기구의 실효 부하를 자동 계산하여 기구 간 정확한 중량 비교 지원 |
| AI 챗봇 | 운동 관련 질문에 관련 논문을 검색한 뒤, 논문 출처 카드를 첨부하여 근거 기반 답변 제공 |
| Progressive Overload | 운동 기록을 분석하여 목표 달성 시 자동 중량 증가 제안, 기구 한계 도달 시 대안 안내 |
graph TB
subgraph "Mobile App"
A["React Native + Expo"]
end
subgraph "Backend Server"
B["FastAPI (Python 3.11+)"]
B1["Auth Service<br>JWT + Refresh Token Rotation"]
B2["Routine Service<br>Load Calculation Engine"]
B3["Chat Service<br>RAG Pipeline"]
B4["Equipment Service<br>Kakao Local API Proxy"]
end
subgraph "Database"
C["PostgreSQL (Supabase)<br>28 Tables"]
D["ChromaDB<br>Vector DB (In-Process)"]
end
subgraph "External Services"
E["Gemini 1.5 Flash<br>GPT-4o-mini Fallback"]
F["Kakao Local API"]
G["PubMed / PMC"]
end
subgraph "MLOps"
H["GitHub Actions Cron<br>Monthly Paper Ingestion"]
end
A -->|"HTTPS / SSE"| B
B --> B1
B --> B2
B --> B3
B --> B4
B1 --> C
B2 --> C
B3 --> D
B3 --> E
B4 --> F
H --> G
H --> D
event_id 기반 재연결, data: [DONE]으로 종료id: evt_001
data: {"type": "chunk", "content": "..."}
id: evt_002
data: {"type": "day_complete", "day": 1, "data": {...}}
id: evt_final
data: {"type": "done", "routine_id": "uuid"}
data: [DONE]
| 영역 | 기술 | 비고 |
|---|---|---|
| 모바일 | React Native 0.76.6 + Expo 52 (Managed) | Expo Go 개발, EAS Build 배포, New Architecture 활성화 |
| 상태 관리 | TanStack Query 5 + Zustand 5 | 서버 상태(Query) + 클라이언트 상태(Zustand) 분리 |
| 네비게이션 | React Navigation 7 | native-stack + bottom-tabs |
| 백엔드 | FastAPI (Python 3.11+) | Pydantic v2, SQLAlchemy 2.0 async |
| DB 마이그레이션 | Alembic | 단독 관리, Supabase 대시보드 직접 수정 금지 |
| 관계형 DB | PostgreSQL 15 (Supabase) | asyncpg 드라이버 |
| Vector DB | ChromaDB 인프로세스 | PersistentClient(), /chroma-data 볼륨 필수 |
| LLM | Gemini 1.5 Flash → GPT-4o-mini | 환경변수로 교체, 자동 fallback |
| 임베딩 | BAAI/bge-large-en-v1.5 | 1024차원 |
| 배포 | AWS (EC2/ECS Fargate) | Docker 이미지, ALB + HTTPS |
| CI/CD | GitHub Actions | PR 테스트 + 월간 논문 파이프라인 |
| 코드 품질 | ruff (Python) / Prettier + ESLint (TS) | CI에서 자동 검사, 머지 차단 |
| 청킹 | 자체 구현 Section-Aware | 300~512 토큰, overlap 50 |
| 토큰 보안 | expo-secure-store | JWT 안전 저장 |