Skip to content

MinHeokChoi/bodyweight_feedback_buffer

Repository files navigation

피드백 버퍼 Feedback Buffer

맨몸운동 직후 사라지는 감각과 코칭 포인트를 붙잡아, 다음 훈련에서 다시 꺼내보는 iOS 앱

iOS Swift Tuist Privacy

소개

피드백 버퍼는 맨몸운동을 하며 느낀 미세한 감각, 실수, 코칭 포인트를 기술별로 기록하고 다음 훈련 전에 다시 확인할 수 있게 도와주는 개인 훈련 피드백 앱입니다.

운동 기록 앱은 보통 세트 수, 횟수, 무게처럼 숫자로 남기기 쉬운 정보를 기록합니다.
하지만 맨몸운동에서 정말 중요한 단서는 숫자가 아닐 때가 많습니다.

  • Handstand에서 어깨가 말린 느낌
  • HSPU 라인이 무너진 순간
  • Pull ups에서 반동이 들어간 타이밍
  • Front Lever에서 코어가 풀린 감각
  • Dips에서 어깨가 불안정했던 구간

이런 피드백은 운동 직후에는 선명하지만, 시간이 지나면 금방 흐려집니다.
피드백 버퍼는 그 짧은 감각을 빠르게 기록하고, 중요도와 반복 여부에 따라 다시 볼 순서를 정리해줍니다.

문제의식

맨몸운동 실력은 단순히 “몇 회 했는가”만으로 늘지 않습니다.

같은 동작을 반복하더라도
어떤 라인이 무너졌는지,
어떤 감각을 다시 찾아야 하는지,
어떤 실수를 반복하고 있는지를 알아야 다음 훈련이 달라집니다.

피드백 버퍼는 운동을 대신 분석해주는 앱이 아닙니다.
사용자가 직접 느낀 훈련 단서를 잊지 않도록 붙잡아두는 도구입니다.

주요 기능

1. 피드백 버퍼

아직 해결하지 못한 피드백을 우선순위대로 보여줍니다.

중요도가 높거나, 오래 방치되었거나, 반복해서 놓친 피드백일수록 더 위에 표시되어 오늘 먼저 확인해야 할 포인트를 빠르게 찾을 수 있습니다.

2. 기술별 피드백 기록

각 기술마다 다른 피드백을 분리해서 관리할 수 있습니다.

예시 기술:

  • Handstand
  • HSPU
  • Pull ups
  • Front Lever
  • Dips
  • Muscle Up

각 피드백에는 제목, 메모, 중요도, 상태를 기록할 수 있습니다.

3. 해결 / 더 연습 표시

훈련에서 반영한 피드백은 해결 처리할 수 있습니다.
다시 놓친 피드백은 더 연습으로 표시해 우선순위를 올릴 수 있습니다.

이를 통해 단순한 메모장이 아니라, 반복되는 약점을 다시 끌어올리는 피드백 루프를 만들 수 있습니다.

4. 빠른 문구

자주 쓰는 피드백 문구를 직접 관리할 수 있습니다.

예를 들어:

  • 코어 풀림
  • 어깨 말림
  • 손목 눌림
  • 라인 무너짐
  • 반동 들어감

반복해서 쓰는 표현을 빠르게 입력할 수 있어 운동 직후 기록 부담을 줄입니다.

5. 기술 라이브러리

자신이 훈련하는 기술을 직접 추가, 수정, 삭제, 정렬할 수 있습니다.

기술 이름을 변경하면 기존 피드백의 기술명도 함께 동기화되도록 설계했습니다.

6. 웜업 체크리스트

매일 확인하는 웜업 루틴을 체크리스트로 관리할 수 있습니다.

웜업 항목은 직접 편집할 수 있고, 날짜가 바뀌면 체크 상태를 새로 시작할 수 있습니다.

7. 기기 내 저장

피드백 버퍼는 별도 서버를 사용하지 않습니다.

  • 로그인 없음
  • 광고 없음
  • 분석 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

주요 설계

AppStore

앱 전역 상태와 사용자 액션을 관리하는 단일 상태 저장소입니다.

피드백 추가, 해결, 삭제, 기술 관리, 웜업 체크, 온보딩 상태 등을 한 곳에서 관리합니다.

FeedbackRepository

피드백과 기술 목록을 JSON 파일로 저장하고 불러옵니다.

  • feedbacks.json
  • skills.json

WarmupRepository

날짜별 웜업 체크 상태와 사용자 루틴을 UserDefaults에 저장합니다.

UserSettingsRepository

온보딩 완료 여부와 빠른 문구를 관리합니다.

FeedbackScoring

활성 피드백의 우선순위 점수를 계산하고 정렬합니다.

SampleData

첫 실행 시 사용할 기본 기술 목록을 제공합니다.

데이터 저장 방식

앱은 서버 없이 동작합니다.

데이터 저장 위치
피드백 목록 feedbacks.json
기술 목록 skills.json
온보딩 상태 UserDefaults
빠른 문구 UserDefaults
웜업 체크 상태 UserDefaults
웜업 루틴 UserDefaults

저장 또는 로드 실패가 발생하면 앱 내 알림으로 복구 메시지를 보여주고, 가능한 경우 기본 데이터로 앱을 계속 사용할 수 있도록 처리합니다.

실행 방법

요구 사항

  • macOS
  • Xcode
  • Tuist
  • iOS 17.0 이상 시뮬레이터 또는 실제 기기

프로젝트 생성

tuist generate

생성 후 Xcode에서 워크스페이스를 엽니다.

open FeedbackBuffer.xcworkspace

빌드

tuist build FeedbackBuffer

테스트

tuist test FeedbackBuffer

또는 Xcode에서 FeedbackBufferTests 타깃을 실행할 수 있습니다.

테스트 범위

현재 테스트는 핵심 도메인 로직을 중심으로 구성되어 있습니다.

  • 피드백 점수 계산
  • 피드백 우선순위 정렬
  • 해결된 피드백 필터링
  • 중요도, 방치 기간, 더 연습 횟수 반영
  • 기본 기술 시딩
  • 온보딩 상태 저장
  • 빠른 문구 저장
  • 피드백 추가, 해결, 삭제
  • 웜업 체크와 날짜별 리셋
  • 웜업 루틴 편집
  • 기술 추가, 수정, 삭제, 정렬
  • 기술명 변경 시 기존 피드백 동기화
  • 중복 기술명 방지
  • 저장 실패 시 복구 흐름

App Store 제출 메모

한국어 App Store Connect 제출용 초안은 AppStoreSubmission_ko.md에 정리되어 있습니다.

현재 앱은 다음 방향을 기준으로 작성되어 있습니다.

  • 로그인 없음
  • 인앱 결제 없음
  • 광고 없음
  • 분석 SDK 없음
  • 추적 없음
  • 네트워크 통신 없음
  • HealthKit, 위치, 카메라, 사진, 마이크 권한 사용 없음

FeedbackBuffer/Resources/PrivacyInfo.xcprivacy에는 수집 데이터 없음과 추적 없음이 반영되어 있습니다.

개발 원칙

이 프로젝트의 핵심은 “운동을 자동으로 분석하는 것”이 아니라,
사용자가 직접 느낀 훈련 단서를 잊지 않게 붙잡아두는 것입니다.

새 기능을 추가할 때는 아래 기준을 우선합니다.

  • 기록까지 걸리는 탭 수를 늘리지 않을 것
  • 피드백의 우선순위 판단을 흐리지 않을 것
  • 사용자의 데이터를 외부로 보내지 않을 것
  • 테스트 가능한 도메인 로직은 UI와 분리할 것

향후 개선 아이디어

  • 피드백 검색 및 필터
  • 기술별 통계 요약
  • 주간 훈련 회고
  • 피드백 아카이브 화면
  • iCloud 동기화 옵션
  • 스크린샷 기반 App Store 소개 이미지 추가

한 줄 요약

피드백 버퍼는 맨몸운동 직후의 감각을 잊지 않고, 다음 훈련에서 다시 꺼내보게 만드는 개인 피드백 루프 앱입니다.

About

Bodyweight Feedback Buffer app extracted from Side-Project

Resources

Stars

Watchers

Forks

Releases

No releases published

Packages

 
 
 

Contributors

Languages