피드로 돌아가기
Dev.toFrontend
원문 읽기
I built a PWA fitness tracker with AI that supports 86 sports — as a solo developer
솔로 개발자가 Vanilla JavaScript + Firebase + Google Gemini API로 86개 스포츠를 지원하는 PWA 피트니스 트래커를 구축해 앱스토어 심사 과정 제거 및 10배 빠른 개발 속도 달성
AI 요약
Context
사용자가 강도 높은 훈련, 러닝, 격투기를 추적하기 위해 Strava, Strong, 스프레드시트 등 3개의 서로 다른 앱을 사용해야 했으며, 이들 앱 간 데이터 연동이 불가능해 통합된 훈련 기록을 볼 수 없었다.
Technical Solution
- Frontend를 Vanilla JavaScript + Tailwind CSS 조합으로 구성해 React/Next.js 같은 프레임워크 의존성 제거
- PWA 아키텍처로 구현해 앱스토어 배포 과정 없이 브라우저에서 즉시 설치 및 업데이트 가능하게 구성
- 각 스포츠별 맞춤형 추적 스키마(양궁은 거리·화살·정확도, 수영은 랩·시간·영법·페이스) 설계해 제너릭 필드 제약 해결
- Firebase(Auth, Firestore, Cloud Functions)를 백엔드로 채택해 인증·데이터베이스·호스팅·클라우드 함수를 단일 생태계에서 관리
- Google Gemini API를 5개 AI 시스템(AI Coach, Form Builder, Training Plan Generator, Pre-Hab, ZNS Readiness)에 통합해 API 요금 급증 시 무료 사용자는 하루 3회, PRO 사용자는 무제한으로 호출 제한 적용
- Service Worker를 사용한 offline-first 구현으로 인터넷 연결 없이 로컬 저장소에서 데이터 저장·동기화 가능
- 7개 언어 지원(아랍어 포함 RTL 풀 지원) 구현
Impact
개발 속도가 네이티브 앱 대비 10배 빠름 (앱스토어 심사 과정 제거)
Key Takeaway
PWA는 앱스토어 심사 없이 모든 디바이스에서 즉시 배포되고 Service Worker 기반 offline-first 구현으로 네트워크 연결 불안정한 환경(체육관 WiFi 등)을 극복할 수 있으므로, 빠른 개발 사이클과 다중 스포츠 같은 도메인별 맞춤형 데이터 스키마가 필요한 MVP에서 고려할 가치가 있다.
실천 포인트
다중 스포츠·활동을 추적하는 모바일 앱을 개발할 때 각 도메인별로 서로 다른 필드 세트를 지원해야 한다면, Firestore의 유연한 문서 구조를 활용해 스포츠별 맞춤 스키마를 저장하고 Google Gemini API를 조합해 텍스트 설명으로부터 추적 폼을 자동 생성하는 방식으로 구현하면 개발 복잡도를 크게 줄일 수 있다.