Hourglass - Workout Timer


1. 앱 현재 상태

데모 및 간단 소개

쉐이크 모션을 사용하여 타이머를 활성화 시키고, 이를 이용하여 운동 중 쉬는 시간을 관리할 수 있습니다. 이외에 운동 루틴을 관리하고, 무게 / 횟수 / 시간 을 운동 별로 설정할 수 있습니다

Demo.mp4

Untitled

Untitled

Untitled

  1. 초기 컨셉인 흔들어서 타이머를 활성화 시키는 기능을 구현
  2. 무게, 횟수, 시간초를 설정하여 세트를 만들고, 이를 조합하여 루틴을 만들 수 있음

2. 구현하지 못한 점들 및 업데이트 계획

예상 다이어리 화면

예상 다이어리 화면

다이어리 입력 화면 / 콜렉션 뷰를 input뷰로 설정

다이어리 입력 화면 / 콜렉션 뷰를 input뷰로 설정

  1. 운동을 기록하는 다이어리(메모장 기능)
  2. 루틴 또는 운동을 입력할 때 타이핑이 아니라, 콜렉션 뷰를 선택하여 입력하는 기능
  3. 설정 화면 및 기능들 ( 다국어 지원 / 파운드, kg 단위 지원 / 백업 복구), 온보딩 뷰(기초 설명)
  4. Realm 마이그레이션
  5. 운동 프리셋 제공
  6. 타이머 백그라운드
  7. 노티피케이션 기능
  8. 사용자 알림 - 진동 강화, 토스트 메시지 등
  9. 통화 중 또는 다른 작업 시 타이머 취소와 리셋 구현
  10. 오픈소스 라이선스 고지의무

3.이슈

  1. 탭바에 있는 특정 화면 로드 : selectedIndex → 커스텀 탭바로 해결
  2. 커스텀 Tabbar를 사용할 경우, 아이폰 8화면에서의 탭바가 깨짐(수정 중)
  3. 테이블 뷰에서 스크롤을 내릴 시, 탭 바 색깔이 변하는 이슈 : 커스텀 탭바로 해결
  4. 텍스트 필드 입력 글자 수 제한
  5. Realm 테이블 구조(오브젝트)에는 FK가 없어서 어떻게 접근할지 고민하였음
    1. Routine, Workout 그리고 Set의 종속 구조

4. 느낀 점

  1. 앱을 만들면서 예상 공수와 실제 공수의 차이로 인해 딜레이가 발생했고, 예상 공수 산정을 넉넉하게 두어야겠다.
  2. 출시날이 다가오니까 소스가 점점 스파게티 소스가 되었음. 클린 코드 열심히 읽었는데 적용을 하나도 못했다.
  3. 버그 수정하고 리팩토링하면서, 기능을 Manager로 만들어서 분리해야할 필요성 느낌.
  4. 데이터 CRUD하는 화면 및 전체 화면 전환의 설계를 처음부터 제대로 하지 않으면, 나중에 고생 함.