# Backyard Ultra Live > A single-screen iPhone race dashboard for backyard ultras and other > last-runner-standing races: one loop per cut-off period, on the hour, until you > stop. The screen answers one question — am I going to make the cut-off? — > and everything else is arranged underneath that. Platform: iOS (iPhone). Price: free, with a one-off £4.99 in-app purchase to remove adverts. No subscription. Site: https://backyard-ultra.live/ ## Pages - / — the app: what it does and every readout on the dashboard - /backyard-ultra-calculator — turn a lap time into the rest it earns, the pace it needs, and what twenty-four yards costs in time on your feet - /what-is-a-backyard-ultra — the format, its rules, its origin and its vocabulary - /how-long-is-a-backyard-ultra-lap — 6.706 km / 4.167 miles, and why that number - /courses/the-mackyard-x-4zero-ultra — a worked course: shape, profile and the lap times that make the cut-off ## The hero readout Two bars share one scale. The top bar is the cut-off, the hour draining away; the bottom bar is how far round the loop the runner actually is. The horizontal gap between their leading edges is the buffer — rest being banked — read as an offset rather than a number. A tick on the lap bar marks where target pace would have them, so "am I on plan" and "am I on time" are the same glance. The whole screen takes its colour from the same state. ## Target lap time Setting a target lap time makes it the warning threshold: - amber — projected to miss the target lap time - red — projected to miss the cut-off - green — comfortable, banking rest Without a target, the app falls back to five minutes of buffer. The target also scores the loop progression chart and drives the discipline summary. ## Readouts on the dashboard - Hero: time left in the yard, projected buffer, yard number, cut-off length - Lap: distance done and left, delta vs last lap, target, vs target, projected lap, line-crossing time of day - The loop: the lap as a schematic shape, ground covered filled in, position marker, start/finish flagged - Lap profile: lap elevation with position, climb per lap, low and high - Pace: speed, pace now, pace average, target pace, cut-off pace, needed now - Ground ahead: climb left, gradient, altitude, projected lap, line at, terrain-adjusted ETA - Race clock: elapsed, moving, stopped, yards, total distance, total climb, best / average / last lap - Loop progression: every lap as a bar against the cut-off, coloured by whether it hit target, with cumulative distance, time and the rest it earned, plus five ghost rows for the yards ahead - Discipline: laps on target, average vs target, spread fastest to slowest, drift per lap ## Courses Courses are per-account and imported as GPX from Files. Each carries a name, a date and start time, and a format: - Backyard — one lap per cut-off period (60 minutes by default), unlimited - Set laps — a fixed number of laps - One pass — start to finish, once The start time anchors the clock: cut-off boundaries fall on start + N × cut-off, so the hour is exact rather than dependent on tapping a button. ## Design decisions worth knowing - The loop is drawn as a schematic trace rather than on a basemap: it reads faster, needs no network or battery in a field, and an off-course warning covers "am I lost" without map tiles. - Position is measured in metres along the course, not by index into the coordinate list, because a GPX is dense on bends and sparse on straights. - Lap detection is windowed against the last known position rather than a global nearest-point search, because on a loop the start and the finish are the same place. - The elevation profile is drawn from raw GPX elevation and never squeezes less than 60 m of range into full height, so flat ground looks flat. ## Live tracking and supporters The runner can share a link opening a crew view: the loop with their position, lap times, and how they are holding target, updating as they run. The page draws the course itself rather than loading a basemap. Sharing is off until switched on, the link carries a full UUID, and a new link can be issued to cut off holders of the old one. Supporters can also watch inside the app without an account: "Watch a runner" on the sign-in screen takes a four-digit code. Four digits is 10,000 combinations, so the code is a convenience rather than a secret and a host must rate limit lookups. ## Alerts Local notifications for laps finished, cut-off closing (three minutes before the hour), rest nearly over, going off course, and slipping off target. Each is switchable and a ceiling caps how many arrive per hour, because a backyard runs for days and an unbounded feed is how people mute an app and then miss the one that mattered. Alerts are scheduled on the device. ## Accounts and privacy Sign-up is required and accounts are stored on the device: passwords are PBKDF2-SHA256 hashed (210,000 iterations, per-account salt) and held in the Keychain, with each runner's courses and lap history under their own user id. This is device-side storage, not server-side authentication. Nothing leaves the phone unless live tracking is switched on. ## Glossary - Backyard ultra: a last-runner-standing race where everyone starts the same loop on the hour and must finish inside the hour to start the next one. - Yard: one loop, and by extension one hour of the race. - Cut-off: the time limit for one loop. "Making the cut-off" is finishing the loop in time to be back on the line for the next start. - Corral: the pen runners gather in before each start, and by extension the hour itself. Used interchangeably with cut-off in the sport; this app says cut-off throughout. - Buffer / rest: the time between finishing a loop and the next hour starting. - The traditional loop is 6.706 km (4.167 miles), so 24 yards is 100 miles.