← 처음으로

SyncRun

창업

SyncRun Labs · 2026년 9월 App Store 출시

역할공동창업자·CTO
기간2026.07 ~

요약

휴대폰을 맞대 그 자리에서 그룹을 만들고, 함께 뛴 기록을 러닝 카드 한 장으로 남기는 러닝 앱. 혼자 뛰기와 그룹 뛰기 모두 지원.

문제

크루 러닝의 출석 확인과 출발은 사람이 직접 맞추고, 함께 뛴 기록은 각자의 앱에 흩어짐.

그림

SyncRun 앱 화면
App Store 스크린샷

주요 기능

  • UWB 근접 판정으로 맞댐 그룹 생성. 기존 그룹에 한 명 추가, 두 그룹 합치기 지원
  • 준비 카운터와 서버 기준 시각에 맞춘 전원 동시 출발
  • 러닝 중 그룹 실시간 현황(거리·페이스·지도), 응원, 음성 안내
  • 연결이 끊겨도 기기에 기록 저장, 전원 종료 시 그룹 결과 완성
  • 러닝 카드 자동 생성과 편집·공유
  • Apple·Google 로그인, Apple Watch, 잠금 화면·위젯, 한국어/영어

구현

  • GPS·걸음 수 융합 거리 측정. 위치 정확도가 좋은 구간에서 보폭 계수를 학습하고, 위치가 끊기면 걸음 거리로 보완. 튀는 좌표 격리, 정지 상태 표류 억제
  • UWB 맞댐 판정. 최근 샘플 3개의 중앙값을 진입 1.0m / 이탈 1.4m 이중 임계값으로 판정, 거리별 유지 시간 적용
  • 동시 출발 시각 보정. 연결 직후 시각 동기화를 3회 측정해 왕복 시간이 가장 짧은 표본의 시각 차이 채택
  • 외부 라이브러리 없이 Socket.IO 클라이언트 프로토콜 직접 구현. 범위를 WebSocket·JSON·단일 네임스페이스로 좁히고 순수 함수로 작성해 유닛 테스트로 고정
  • 배포: staging 배포 후 헬스체크 응답의 커밋 SHA로 새 버전을 확인한 뒤에만 운영으로 승격, 4분 안에 확인되지 않으면 직전 이미지로 자동 롤백. 키 파일 없이 Workload Identity Federation으로 GCP 인증
  • 오프라인 우선 동기화 서버: 기록 업로드 멱등 처리, 커서 기반 증분 동기화, 삭제는 tombstone 방식

구조

  • iOS: SwiftUI, CoreLocation, CoreMotion, NearbyInteraction(UWB), HealthKit, ActivityKit, WidgetKit, WatchConnectivity
  • Android: Kotlin, Jetpack Compose, WorkManager, Firebase
  • 서버: NestJS, Prisma, PostgreSQL, Socket.IO 실시간 세션(클라이언트→서버 이벤트 21종), APNs·FCM 푸시
  • 인프라: Terraform으로 GCP 서울 리전 구성(Compute Engine, Cloud SQL, Secret Manager, Cloud Monitoring). GitHub Actions에서 키 없이 GCP 인증 후 staging → prod 배포
  • 데이터: 오프라인 우선. 기기 안 저장이 1차, 서버는 백업·기기 간 동기화·그룹 결과 취합 담당

기여

서버·인프라 전체, iOS 측정(GPS·걸음 수)·근접(UWB)·실시간 통신 계층, Android 앱 개발. iOS 화면 개발은 팀원과 분담.

링크

App Store ↗
← 처음으로