Skip to content
RaceRunner is a run-tracking app focused on racing.
Branch: master
Clone or download
Fetching latest commit…
Cannot retrieve the latest commit at this time.
Permalink
Type Name Latest commit message Commit time
Failed to load latest commit information.
RaceRunner.xcodeproj bump version and add intent vocabulary Feb 17, 2019
RaceRunner.xcworkspace cleanup and update dependencies May 14, 2018
RaceRunner
Siri
.gitignore
Podfile add analytics Feb 16, 2019
Podfile.lock
README.md
privacyPolicy3.html
unused.rb

README.md

RaceRunner

Twitter license cat

RaceRunner

RaceRunner is a run-tracking iPhone app focused on racing. Spectators can track the progress of runners during races. Spectators can start and stop timing of runs. Spectators can send messages to runners which are read aloud by the runner's phone. The app can stop timing a run automatically after a certain distance, which is useful for the time trials that runners conduct in preparation for races. The app can track shoe mileage and warn the user when mileage limits are exceeded.

I released RaceRunner to the App Store on April 21, 2016. Since then, a Chinese open-source-app website, iOSCodeHub, featured RaceRunner!

Notwithstanding my previous, positive experience with the pay-up-front business model, I decided to try freemium with RaceRunner. The app is therefore free to download but two features, broadcasting of runs to spectators and use of an animated horse to represent the runner, are available via in-app purchases.

The full source code for RaceRunner is here on GitHub for two reasons. First, open source seems appropriate in light of RaceRunner's open-source heritage. Second, I wish to advance the state of the art in run-tracking apps.

If you would like to build RaceRunner for yourself, follow these four easy steps:

  1. Clone the repo.
  2. Type pod install from the root of RaceRunner in Terminal.
  3. Add API keys for Google Maps, Dark Sky, and PubNub to Config.swift.
  4. Modify UIView+Bezier.swift, which is in the COBezierTableView CocoaPod, as shown below.
    public struct BezierPoints {
        static var p1 = CGPoint(x: -128, y: 0)
        static var p2 = CGPoint(x: 260, y: 374)
        static var p3 = CGPoint(x: -250, y: 168)
        static var p4 = CGPoint(x: 5, y: 480)
    }

Run in Progress

Colors of the route indicate altitude changes.

RaceRunner

Run Details

Colors of the route indicate pace changes.

RaceRunner

Run Details

App looks great in landscape mode.

RaceRunner

Graph of Pace and Altitude

RaceRunner

Settings

RaceRunner

Spectating a Race in Germany from California

RaceRunner

Spectating a Walk in Vermont from California

RaceRunner

A Ski Run in the French Alps

RaceRunner

Shoes

RaceRunner

Horse IAP

User can unlock animated-horse IAP.

RaceRunner

Main Menu

RaceRunner

Chromatic Inspiration

Miami Vice

You can’t perform that action at this time.
You signed in with another tab or window. Reload to refresh your session. You signed out in another tab or window. Reload to refresh your session.