Ex-항공정비사가 설계한 러닝 앱

Turn Every
Run Into A Flight.

A320F 정비사 출신 개발자가 만든 iOS 러닝 트래커.
GPS, 심박수, 케이던스를 계기판처럼 읽고, 페이스 이탈을 GPWS 경보로 알려줍니다.

iOS 26+ · watchOS 11.5+SwiftUI · Actor · AsyncStream
Flight Operations

두 가지 비행 모드

항공기 운항 절차에서 착안한 상태 머신으로 러닝 전체를 관리합니다.
시작 버튼을 누르면 이륙 시퀀스가, 러닝 중에는 실시간 계기판이 기다립니다.

MODE A

Mission Flight

목표 페이스와 거리를 설정하고 운항합니다. 허용 오차를 벗어나면 GPWS가 즉시 경고합니다.

  • 목표 페이스 ± 오차 설정
  • 빠른 거리 선택 (3K / 5K / 10K / 하프 / 풀)
  • 목표 거리 50m 전 MINIMUMS 경보
MODE B

Free Flight

목표 없이 자유롭게 달리는 VFR(시계비행) 모드. 수동으로 Touchdown하여 종료합니다.

  • 목표 설정 없음
  • GPWS 비활성
  • 자유로운 페이스 기록
Ground Proximity Warning System
SINK RATE
목표 페이스보다 느려짐
OVERSPEED
목표 페이스보다 빨라짐
MINIMUMS
목표 거리 50m 전 진입
iPhone & Apple Watch

두 화면, 하나의 비행

Watch가 주도하든 iPhone이 주도하든, 두 기기는 같은 FlightData를 공유합니다.
이륙 준비부터 착륙 후 기록까지, 실제 화면으로 확인해보세요.

iPhone · 좌우로 스크롤
HOME · 대시보드
HOME · 대시보드
MISSION FLIGHT · 설정
MISSION FLIGHT · 설정
TAKEOFF · 사전 점검
TAKEOFF · 사전 점검
MISSION FLIGHT · CRUISE
MISSION FLIGHT · CRUISE
FREE FLIGHT · CRUISE
FREE FLIGHT · CRUISE
TOUCHDOWN
TOUCHDOWN
FLIGHT SUMMARY · MAP ROUTE
FLIGHT SUMMARY · MAP ROUTE
LOGBOOK
LOGBOOK
ALERTS · GPWS 기록
ALERTS · GPWS 기록
FLIGHT CALENDAR
FLIGHT CALENDAR
DYNAMIC ISLAND
DYNAMIC ISLAND
Apple Watch
WATCH · MODE SELECT
WATCH · MODE SELECT
WATCH · PFD
WATCH · PFD
WATCH · SUMMARY
WATCH · SUMMARY
Under The Hood

설계 결정 세 가지

동시성 처리, 상태 관리, 기기 간 동기화 - RunWay를 만들며 가장
많이 고민한 세 가지 지점입니다.

CoreLocation
HealthKit
WatchConnectivity
RunningCenter (actor · serial queue)
AsyncStream<FlightData>
ViewModel (@MainActor) → SwiftUI
왜 이렇게 설계했는가

GPS, 심박수, 케이던스가 동시에 들어오므로 상태 무결성을 보장하기 위해 RunningCenter Actor를 두고 모든 러닝 계산을 단일 격리 영역에서 처리했습니다.

SwiftUIUI
@MainActor + @Observable상태관리
RunningCenter (Actor)동시성
AsyncStream센서 → ViewModel
FlightPhase enum상태 머신
WatchConnectivityiPhone ↔ Watch
SwiftData저장
MapKit + MapPolyline경로 시각화