맨몸운동 직후 사라지는 감각과 코칭 포인트를 붙잡아, 다음 훈련에서 다시 꺼내보는 iOS 앱
피드백 버퍼는 맨몸운동을 하며 느낀 미세한 감각, 실수, 코칭 포인트를 기술별로 기록하고 다음 훈련 전에 다시 확인할 수 있게 도와주는 개인 훈련 피드백 앱입니다.
운동 기록 앱은 보통 세트 수, 횟수, 무게처럼 숫자로 남기기 쉬운 정보를 기록합니다.
하지만 맨몸운동에서 정말 중요한 단서는 숫자가 아닐 때가 많습니다.
- Handstand에서 어깨가 말린 느낌
- HSPU 라인이 무너진 순간
- Pull ups에서 반동이 들어간 타이밍
- Front Lever에서 코어가 풀린 감각
- Dips에서 어깨가 불안정했던 구간
이런 피드백은 운동 직후에는 선명하지만, 시간이 지나면 금방 흐려집니다.
피드백 버퍼는 그 짧은 감각을 빠르게 기록하고, 중요도와 반복 여부에 따라 다시 볼 순서를 정리해줍니다.
맨몸운동 실력은 단순히 “몇 회 했는가”만으로 늘지 않습니다.
같은 동작을 반복하더라도
어떤 라인이 무너졌는지,
어떤 감각을 다시 찾아야 하는지,
어떤 실수를 반복하고 있는지를 알아야 다음 훈련이 달라집니다.
피드백 버퍼는 운동을 대신 분석해주는 앱이 아닙니다.
사용자가 직접 느낀 훈련 단서를 잊지 않도록 붙잡아두는 도구입니다.
아직 해결하지 못한 피드백을 우선순위대로 보여줍니다.
중요도가 높거나, 오래 방치되었거나, 반복해서 놓친 피드백일수록 더 위에 표시되어 오늘 먼저 확인해야 할 포인트를 빠르게 찾을 수 있습니다.
각 기술마다 다른 피드백을 분리해서 관리할 수 있습니다.
예시 기술:
- Handstand
- HSPU
- Pull ups
- Front Lever
- Dips
- Muscle Up
각 피드백에는 제목, 메모, 중요도, 상태를 기록할 수 있습니다.
훈련에서 반영한 피드백은 해결 처리할 수 있습니다.
다시 놓친 피드백은 더 연습으로 표시해 우선순위를 올릴 수 있습니다.
이를 통해 단순한 메모장이 아니라, 반복되는 약점을 다시 끌어올리는 피드백 루프를 만들 수 있습니다.
자주 쓰는 피드백 문구를 직접 관리할 수 있습니다.
예를 들어:
- 코어 풀림
- 어깨 말림
- 손목 눌림
- 라인 무너짐
- 반동 들어감
반복해서 쓰는 표현을 빠르게 입력할 수 있어 운동 직후 기록 부담을 줄입니다.
자신이 훈련하는 기술을 직접 추가, 수정, 삭제, 정렬할 수 있습니다.
기술 이름을 변경하면 기존 피드백의 기술명도 함께 동기화되도록 설계했습니다.
매일 확인하는 웜업 루틴을 체크리스트로 관리할 수 있습니다.
웜업 항목은 직접 편집할 수 있고, 날짜가 바뀌면 체크 상태를 새로 시작할 수 있습니다.
피드백 버퍼는 별도 서버를 사용하지 않습니다.
- 로그인 없음
- 광고 없음
- 분석 SDK 없음
- 추적 없음
- 네트워크 통신 없음
사용자가 입력한 피드백, 기술, 빠른 문구, 웜업 정보는 기기 안에 저장됩니다.
활성 피드백은 FeedbackScoring을 통해 점수를 계산한 뒤 내림차순으로 정렬됩니다.
점수에는 다음 요소가 반영됩니다.
| 요소 | 의미 |
|---|---|
| 중요도 | 사용자가 직접 지정한 피드백의 중요도 |
| 더 연습 횟수 | 다시 놓친 횟수 |
| 생성 후 지난 시간 | 오래된 피드백이 묻히지 않도록 반영 |
| 마지막 검토 후 지난 시간 | 오랫동안 다시 보지 않은 피드백을 끌어올림 |
점수 구간은 다음과 같이 나뉩니다.
| Tier | 의미 |
|---|---|
critical |
가장 먼저 확인해야 하는 피드백 |
high |
우선순위가 높은 피드백 |
medium |
꾸준히 확인할 피드백 |
low |
상대적으로 낮은 우선순위의 피드백 |
- Swift
- SwiftUI
- Observation
- XCTest
- Tuist
- iOS 17.0+
.
├── Project.swift
├── Tuist.swift
├── FeedbackBuffer
│ ├── Sources
│ │ ├── App
│ │ ├── Features
│ │ │ ├── Buffer
│ │ │ ├── Library
│ │ │ ├── Root
│ │ │ └── Warmup
│ │ ├── Models
│ │ ├── Services
│ │ └── State
│ └── Resources
├── FeedbackBufferTests
│ └── Sources
└── AppStoreSubmission_ko.md
앱 전역 상태와 사용자 액션을 관리하는 단일 상태 저장소입니다.
피드백 추가, 해결, 삭제, 기술 관리, 웜업 체크, 온보딩 상태 등을 한 곳에서 관리합니다.
피드백과 기술 목록을 JSON 파일로 저장하고 불러옵니다.
feedbacks.jsonskills.json
날짜별 웜업 체크 상태와 사용자 루틴을 UserDefaults에 저장합니다.
온보딩 완료 여부와 빠른 문구를 관리합니다.
활성 피드백의 우선순위 점수를 계산하고 정렬합니다.
첫 실행 시 사용할 기본 기술 목록을 제공합니다.
앱은 서버 없이 동작합니다.
| 데이터 | 저장 위치 |
|---|---|
| 피드백 목록 | feedbacks.json |
| 기술 목록 | skills.json |
| 온보딩 상태 | UserDefaults |
| 빠른 문구 | UserDefaults |
| 웜업 체크 상태 | UserDefaults |
| 웜업 루틴 | UserDefaults |
저장 또는 로드 실패가 발생하면 앱 내 알림으로 복구 메시지를 보여주고, 가능한 경우 기본 데이터로 앱을 계속 사용할 수 있도록 처리합니다.
- macOS
- Xcode
- Tuist
- iOS 17.0 이상 시뮬레이터 또는 실제 기기
tuist generate생성 후 Xcode에서 워크스페이스를 엽니다.
open FeedbackBuffer.xcworkspacetuist build FeedbackBuffertuist test FeedbackBuffer또는 Xcode에서 FeedbackBufferTests 타깃을 실행할 수 있습니다.
현재 테스트는 핵심 도메인 로직을 중심으로 구성되어 있습니다.
- 피드백 점수 계산
- 피드백 우선순위 정렬
- 해결된 피드백 필터링
- 중요도, 방치 기간, 더 연습 횟수 반영
- 기본 기술 시딩
- 온보딩 상태 저장
- 빠른 문구 저장
- 피드백 추가, 해결, 삭제
- 웜업 체크와 날짜별 리셋
- 웜업 루틴 편집
- 기술 추가, 수정, 삭제, 정렬
- 기술명 변경 시 기존 피드백 동기화
- 중복 기술명 방지
- 저장 실패 시 복구 흐름
한국어 App Store Connect 제출용 초안은 AppStoreSubmission_ko.md에 정리되어 있습니다.
현재 앱은 다음 방향을 기준으로 작성되어 있습니다.
- 로그인 없음
- 인앱 결제 없음
- 광고 없음
- 분석 SDK 없음
- 추적 없음
- 네트워크 통신 없음
- HealthKit, 위치, 카메라, 사진, 마이크 권한 사용 없음
FeedbackBuffer/Resources/PrivacyInfo.xcprivacy에는 수집 데이터 없음과 추적 없음이 반영되어 있습니다.
이 프로젝트의 핵심은 “운동을 자동으로 분석하는 것”이 아니라,
사용자가 직접 느낀 훈련 단서를 잊지 않게 붙잡아두는 것입니다.
새 기능을 추가할 때는 아래 기준을 우선합니다.
- 기록까지 걸리는 탭 수를 늘리지 않을 것
- 피드백의 우선순위 판단을 흐리지 않을 것
- 사용자의 데이터를 외부로 보내지 않을 것
- 테스트 가능한 도메인 로직은 UI와 분리할 것
- 피드백 검색 및 필터
- 기술별 통계 요약
- 주간 훈련 회고
- 피드백 아카이브 화면
- iCloud 동기화 옵션
- 스크린샷 기반 App Store 소개 이미지 추가
피드백 버퍼는 맨몸운동 직후의 감각을 잊지 않고, 다음 훈련에서 다시 꺼내보게 만드는 개인 피드백 루프 앱입니다.