버전 1: 로그인 없이 날짜별 운동을 기록하는 모바일 PWA입니다. HTML, CSS, JavaScript와 브라우저의 IndexedDB만 사용합니다. 런타임 패키지, 서버, 유료 API가 없습니다.
위 링크를 모바일이나 PC 브라우저에서 열면 회원가입이나 로그인 없이 바로 사용할 수 있습니다. 별도 프로그램을 설치하거나 로컬 서버를 실행할 필요가 없습니다. 모바일에서는 아래 안내에 따라 홈 화면에 추가하여 앱처럼 사용할 수도 있습니다.
- 5개 부위, 14개 운동 선택
- 날짜별 세트 추가·삭제, 세트별 중량(kg)·반복 횟수 수정
- 각 세트의
중량 × 반복 횟수를 합산하여 하루 총 볼륨 계산 - 중량은 0-2,000 kg, 소수점 둘째 자리까지, 반복은 1-999회 정수
- 입력 즉시 기기에 자동 저장, 저장 실패 표시 및 재시도
- 월별 달력, 날짜별 기록과 볼륨 조회
- 기간별 JSON 백업, CSV 내보내기, JSON 복원
- OS 파일 공유를 통해 사용자가 Google Drive 등으로 저장. 지원하지 않으면 다운로드 후 업로드
- 홈 화면 설치, 최초 온라인 로딩 및 캐시 완료 후 오프라인 사용
빈 세트는 초안으로 보관하며 볼륨과 기록한 세트 수에 포함하지 않습니다. 0 kg의 유효한 세트는 세트 수에 포함되지만 볼륨은 0입니다. 원 암 덤벨 로우 등은 사용자가 입력한 무게와 총 반복만 계산하며 좌우 횟수를 임의로 두 배 하지 않습니다.
- iPhone/iPad: Safari → 공유 → 홈 화면에 추가
- Android: Chrome 메뉴 → 앱 설치 또는 홈 화면에 추가
- 백업: 백업 탭 → 기간과 형식 선택 → 공유하여 저장 → 기기에 설치된 Drive 등 선택
- 공유 지원이 없거나 해당 앱이 공유 대상에 나타나지 않으면 다운로드 후 Drive에 직접 업로드합니다.
- JSON은 복원용, CSV는 Excel/Google Sheets에서 조회하는 용도입니다. JSON 복원 시 겹치는 날짜는 명시적 확인 후 덮어쓰고 다른 날짜는 유지합니다.
운동 데이터는 사용 중인 기기의 브라우저 프로필과 사이트 오리진(프로토콜·호스트·포트)에 연결된 IndexedDB에 저장하며, 서버로 전송하지 않습니다. 서로 다른 기기의 기록은 섞이지 않지만, 여러 사람이 같은 기기의 같은 브라우저 프로필로 접속하면 기록을 공유하게 됩니다. 같은 오리진에서는 URL의 경로만 바뀌어도 별도 저장 공간으로 분리되지 않습니다.
기기·브라우저 프로필·사이트 오리진이 바뀌면 기존 기록은 자동으로 이전되지 않습니다. 기존 로컬 실행 환경이나 미리보기에서 작성한 기록은 JSON으로 내보낸 뒤, 현재 접속 주소의 백업 화면에서 복원해 주세요. 설치한 앱의 저장 공간도 브라우저와 다를 수 있습니다. 클라우드 자동 동기화는 없습니다.
브라우저 데이터 삭제, 비공개 모드 종료, 저장 공간 정리 등으로 기록을 잃을 수 있습니다. 영구 저장을 요청하지만 허용 여부는 브라우저가 결정하므로 주기적인 백업이 필요합니다.
처음 온라인으로 앱을 열고 정적 파일 캐시가 준비되면 오프라인에서도 기록할 수 있습니다. 앱 업데이트 후에는 기존 앱 창을 모두 닫고 다시 열면 대기 중인 새 버전이 활성화될 수 있습니다. 서비스 워커는 앱 정적 파일만 캐시하며 IndexedDB 기록은 업데이트 시 삭제하지 않습니다.
아래 명령은 소스를 직접 개발하거나 검증할 때 사용합니다. 일반적인 앱 사용은 위의 접속 링크만으로 가능합니다. 개발 환경은 Node.js 22 이상과 Python 3이며, 의존성 설치는 필요 없습니다.
npm run dev
npm test
npm run check로컬 개발 주소: http://127.0.0.1:4173
앱 파일을 변경할 때는 dist/sw.js의 CACHE 이름을 갱신하고, 정적 파일을 추가하거나 경로를 바꾸면 ASSETS 목록도 맞춰야 합니다. 자세한 개발·배포 지침은 AGENTS.md를 참고하세요.
계산, 날짜 경계, JSON 왕복, 잘못된 백업, CSV 내용을 Node 테스트로 검증합니다. HTML 파일 참조, JavaScript 문법, PNG 크기와 서비스 워커 캐시 목록도 검사합니다. 실제 iOS/Android 설치, OS 공유 대상, 브라우저 오프라인·IndexedDB 동작과 시각적 QA는 기기에서 추가 확인해야 합니다. 선택적 WebMCP는 미지원 브라우저에서 자동으로 생략합니다.
dist/는 직접 작성하는 앱 소스이자 배포 대상입니다.
dist/app.js: 한국어 UI, 자동 저장, 파일 공유/복원dist/model.js: 운동 목록, 볼륨, 날짜, 데이터 검증과 내보내기dist/storage.js: IndexedDB 트랜잭션dist/sw.js,dist/manifest.webmanifest: 오프라인 및 설치dist/webmcp.js: 지원 브라우저의 선택적 도구 인터페이스- AGENTS.md: 프로젝트 구조, 데이터 계약, 개발·배포 지침
- CLAUDE.md:
AGENTS.md를 참조하는 심볼릭 링크
MIT License.