BikeControl (SwiftControl)
Use Zwift Click, Zwift Play, Shimano Di2, or any Bluetooth controller with MyWhoosh, Rouvy, Zwift, and more. Free to try on iOS, Android, Windows, and macOS.
아직 감지된 업데이트가 없습니다. GitHub 릴리스가 나오면 여기에 보입니다.
개인 계정의 공개 저장소 소유자는 GitHub로 로그인해 운영자를 확인하고 소개를 직접 관리할 수 있습니다. 관리자 승인은 필요하지 않습니다.
로그인한 뒤 확인 파일을 만들어 이 저장소의 기본 브랜치에 30분 안에 커밋해 주세요. 다른 브랜치나 포크의 파일은 인정하지 않습니다. 파일을 올린 뒤 아래에서 확인하면 관리자 승인 없이 관리할 수 있습니다. 자격을 유지하려면 파일을 남겨 두세요.
로그인이 필요하면 로그인 화면으로 이동합니다. 로그인 후 이곳으로 돌아와 원하는 확인 버튼을 다시 눌러 주세요.
프로젝트 폴더에서 /nomorevibe verify를 실행하면 소유권을 확인하고 소개를 직접 관리할 수 있습니다.
1분 만에 확인하기README 전체를 불러오는 중입니다. 아래는 저장된 발췌입니다.
PT 수업을 기억하는 가장 안전한 방법 — 회원의 몸 상태에 맞춘 운동을, PT가 없는 날에도 안전하게 복습할 수 있게 돕는 서비스입니다. 🔗 서비스 링크 · 🏆 원티드 AI Championship 2026 출품작 로그인 화면에 트레이너/회원 테스트 계정이 안내되어 있어 바로 체험 가능합니다. PT 트레이너로 일하며 가장 많이 들었던 말은 "오늘 뭐 했는지 기억이 안 나요"였습니다. 수업이 끝나면 회원은 배운 운동을 금방 잊고, 혼자 해보려 해도 "이 운동을 내 몸 상태로 계속해도 되는지" 확신이 없어 실행에 옮기지 못합니다. 특히 부상·수술·지병 이력이 있는 회원일수록 이 불안감이 커서 자율 운동 지속률이 떨어지고, 이는 PT 재등록률 저하로도 이어집니다. Movement.log는 트레이너가 체크만 하면 수업 내용이 자동으로 기록되고, 회원은 그 기록을 PT 없는 날 앱에서 그대로 복습할 수 있게 합니다. 여기에 AI가 회원의 문진·검사·체성분 데이터를 근거로 "왜 이 루틴이 이 사람에게 안전한지"까지 설명해주는 것이 핵심 차별점입니다. AI를 어떻게 썼나 — 단발성 응답이 아닌 3단계 추론 파이프라인README 전문 보기 ↗
PT 수업을 기억하는 가장 안전한 방법 — 회원의 몸 상태에 맞춘 운동을, PT가 없는 날에도 안전하게 복습할 수 있게 돕는 서비스입니다.
🔗 서비스 링크 · 🏆 원티드 AI Championship 2026 출품작
로그인 화면에 트레이너/회원 테스트 계정이 안내되어 있어 바로 체험 가능합니다.
PT 트레이너로 일하며 가장 많이 들었던 말은 "오늘 뭐 했는지 기억이 안 나요"였습니다. 수업이 끝나면 회원은 배운 운동을 금방 잊고, 혼자 해보려 해도 "이 운동을 내 몸 상태로 계속해도 되는지" 확신이 없어 실행에 옮기지 못합니다. 특히 부상·수술·지병 이력이 있는 회원일수록 이 불안감이 커서 개인 운동 지속률이 떨어지고, 이는 PT 재등록률 저하로도 이어집니다.
Movement.log는 트레이너가 체크만 하면 수업 내용이 자동으로 기록되고, 회원은 그 기록을 PT 없는 날 앱에서 그대로 복습할 수 있게 합니다. 여기에 AI가 회원의 문진·검사·체성분 데이터를 근거로 "왜 이 루틴이 이 사람에게 안전한지"까지 설명해주는 것이 핵심 차별점입니다.
역할별로 묶어서 보면, 회원은 처음(문진)과 끝(복습)만 관여하고 그 사이 판단은 AI가, 실행은 트레이너가 맡습니다.
| 단계 | 입력 | AI가 하는 일 |
|---|---|---|
| 위험도 분류 | PAR-Q 7문항 응답, 나이 | 저/중/고 3단계로 분류. 이후 건강 상태가 업데이트될 때마다 재판단 |
| 검사 항목 추천 | 문진 내용(부상/통증 이력) | 트레이너가 진행할 검사 2~3개를 골라 제안 |
| 루틴 생성 | 문진 + 검사 결과 + 인바디 체성분 | 회원별 맞춤 운동과 운동별 개인화된 주의사항을 생성. 골격근량이 낮으면 저강도부터, 위험도가 낮지 않으면 무게 운동·고강도 동작을 후보에서 자동 제외 |
| 인바디 자동인식 | 인바디 결과지 사진 | Vision으로 체중·체지방량·골격근량 등 수치를 자동 추출 (트레이너 확인 후 저장) |
설계 원칙: AI는 항상 "제안"만 하고 최종 결정은 트레이너가 합니다. 사진에서 못 읽은 값은 지어내지 않고 null로 남기며, 위험도는 악화 방향으로만 재분류됩니다(안전 우선).
회원목록 — 위험도·가입상태 한눈에 보이는 대시보드
인바디 사진 자동인식 — 사진을 올리면 AI가 수치를 자동으로 읽어옵니다
지난 수업 기록 복습 — 회원이 PT 없는 날 확인하는 화면
인바디 추이 그래프 — 체성분 변화를 한눈에
| 영역 | 선택 | 이유 |
|---|---|---|
| 프레임워크 | Next.js 16 (App Router, TypeScript) | 프론트·백엔드를 한 프로젝트로 관리 |
| DB / 인증 | Supabase (Postgres + Auth) | RLS로 트레이너/회원 데이터 접근 분리 |
| AI | Claude API (claude-sonnet-5, claude-haiku-4-5) | 구조화된 추론이 필요한 단계는 Sonnet, 비전+비용 최적화가 필요한 인바디 인식은 Haiku |
| 스타일 | Tailwind CSS, shadcn/ui | |
| 배포 | Vercel (서울 리전) | |
| 개발 도구 | Claude Code | 3주 개인 개발 기간 내 전체 서비스 구현 |
enum 기반으로 선택하도록 제한하고, 응답 후에도 서버에서 한 번 더 필터링하는 이중 방어 구조를 적용했습니다.<body>가 flex flex-col일 때 자식 페이지의 mx-auto가 stretch를 무시하고 "줄바꿈 없는 가장 넓은 한 줄" 폭으로 쪼그라드는(shrink-to-fit) CSS 동작이었습니다. viewport 메타태그나 iOS 자동확대 같은 그럴듯한 가설들을 하나씩 배제해가며 근본 원인을 찾았습니다.git clone https://github.com/iigniim/movement-log.git
cd movement-log
npm install
cp .env.example .env.local # Supabase/Anthropic 키 입력
npm run dev