Record Sports — 탁구 기록 & ELO 랭킹 상세 설계서
상태: PUBLIC · RELEASED · STORE_LIVE (Google Play) 기술 스택: React Native 0.84 (Granite), TypeScript, Zustand, TanStack Query, Firebase 카테고리: Mobile / Sports App
1. 문제와 대상 사용자
동호회 탁구는 경기 결과가 개인의 기억이나 종이 기록으로 흩어져, 실력이 얼마나 늘었는지 확인할 방법이 없습니다. Record Sports는 클럽 단위로 뛰는 생활체육 탁구인을 대상으로, 경기를 그 자리에서 기록하고 ELO 레이팅으로 실력 변화를 눈에 보이게 만듭니다.
2. 핵심 기능
| 기능 | 설명 |
|---|---|
| 실시간 경기 기록 | Quick / Detailed 모드, 5세트·3세트 포맷, 듀스 자동 감지 |
| ELO 레이팅 | 7단계 티어, 자동 승격 연출 |
| 그룹 · 랭킹 | 클럽 관리, 글로벌/친구 랭킹, 이중 승인 시스템 |
3. 기술 선택 이유
- React Native (Granite Router): 단일 코드베이스로 기록 UI를 빠르게 반복하기 위해 선택했습니다.
- Zustand + TanStack Query: 로컬 경기 진행 상태와 서버 동기화 상태를 분리해 다루기 위한 조합입니다.
- Firebase (Auth / Firestore / Functions): 1인 운영에서 서버 관리 부담을 줄이고 승인·랭킹 집계를 서버리스로 처리합니다.
- Sentry: 크래시 추적을 위해 연동해 두었으나, 배포 빌드에 DSN이 설정돼 있지 않아 현재 이벤트 수집은 비활성 상태입니다.
4. 현재 범위
- 경기 기록, ELO, 그룹·랭킹에 더해 온라인 도전장, 토너먼트, 친구, 경기 이중 승인까지 실배포 범위에 들어 있습니다.
- 배포 국가는 대한민국(KR) 단독입니다.
- 첫 출시는 광고(AdMob) 전용이라 프리미엄 성장 분석·결제 진입점이 코드 레벨에서 꺼져 있습니다.
- 웹 아카이브에서는 앱을 실행하지 않습니다. 화면 기반 제품 투어를 제공하고, 실제 사용은 공식 스토어 설치로 연결합니다.
5. 알려진 한계
- Android 우선입니다. 웹 투어는 실제 앱 실행이 아니며, 기록 데이터는 앱 계정에 귀속됩니다.
- 랭킹은 클럽 내 활동량에 영향을 받으므로 소규모 그룹에서는 레이팅 변동 폭이 큽니다.
- 현재 대한민국 Google Play에만 배포되어 해외 스토어 계정에서는 설치할 수 없습니다.
- 첫 출시는 광고 전용이라 프리미엄 성장 분석·결제 기능은 잠겨 있습니다.
6. 다음 검증
- vc18 실기기 스모크·E2E 검증(광고 로드·계정 삭제·로그인·온라인 도전장) — 1개월 이상 미착수
- v2.0 수익화 재개(구독 모델 확정 후 IAP 재활성화)
- 토너먼트 시스템의 실사용 검증
- 스토어 버전·지원 기기·개인정보 정책 링크를 릴리스 레저에 반영
