Back to sign in

Relay Race Command Center

01

What is this?

DUDE, Where’s My Team? is a small, focused app for relay teams who need to know one thing at any moment: who’s out there running, and when does the next handoff happen?

It’s built for the chaos of long, multi-leg races. Point-to-point overnight relays, timed-loop ultras, and any other event where teammates trade off running while everyone else hunts for the next exchange in two vans at 3 a.m.

01b

Why this, not a group chat + spreadsheet

Look, you could run your race off a Google Sheet, three group texts, and a captain who hasn’t slept since Thursday. People have. It’s ugly.

  • Built for overnight relays: Not a generic team app with relay bolted on. Every screen exists because someone, at 3 a.m., in a parking lot, asked “wait, who’s up next?”
  • Live leg tracking & handoff alerts: The whole team sees who’s on the course, how far in, and when the next exchange hits, no “ETA?” texts to the runner who can’t check their phone.
  • Late-finisher alerts for captains and admins: If a runner blows past their predicted finish, the people who can do something about it get pinged. Nobody else has to refresh a spreadsheet.
  • Kills the spreadsheet and the 200-message thread: Roster, paces, leg assignments, exchange points, packing list, race notes, all in one place that everyone can read. The group chat goes back to being for memes.
  • Tamper-resistant activity log: Every start, end, and reset is timestamped with who did it. Settles every “wait, did we start leg 14?” argument before it starts.
02

Who it’s for

Captains coordinating the start/finish line, admins who run the show when the captain is on a leg, runners checking how much time they have before they’re up, and supporters in another vehicle trying to figure out where to be next.

03

The big ideas

  • Teams: One team per race. Up to ~24 people across two vans is normal.
  • Roles: Captain (1) and Admins (3) can start/end legs. Runners and supporters view-only.
  • Legs or Laps: Numbered legs for point-to-point relays, or timed-loop laps for ultras.
  • Predicted ETAs: We multiply each runner’s pace by their leg distance to estimate finish times.
  • Activity log: Every start, end, and reset is recorded with who did it and when.
04

Getting started

  1. 1

    Sign in with a magic link

    Enter your email on the sign-in page. We send a one-tap link, no password to remember. Open it on the phone you’ll use during the race.

  2. 2

    Create or join a team

    Captains create a team and get a 6-character invite code. Everyone else taps “Join a team” and enters that code (or opens an invite link).

  3. 3

    Set your name and pace

    Enter your projected race pace in minutes per mile. The app uses this to predict when you’ll finish your legs, accurate paces make the whole team’s ETAs more useful.

05

Roles & permissions

Four people on each team can control leg state: 1 Captain + 3 Admins. That covers the case where the captain is running while the other admins are in the second van, there’s always someone available to start or end a leg.

  • Captain: Creates the team, sets race format, manages settings, transfers role.
  • Admin (up to 3): Starts/ends legs and laps, edits leg assignments.
  • Runner / Supporter: View dashboard, see who’s up, browse the activity log.
06

The five tabs

  • Dashboard: Live status: who’s running now, who’s on deck, predicted finish, team progress bar.
  • Legs / Laps: Full list of every leg (or lap) with assigned runner, distance, status, and start/end controls.
  • Map: Course map with exchange points so the off-duty van knows where to drive next.
  • Notes: Shared scratchpad for the team, directions, food stops, lost-and-found, inside jokes.
  • Packing: Per-runner packing checklist that’s saved to your account so it follows you across teams.
07

Race formats

Relay (numbered legs): A fixed sequence of numbered legs (often 36). Runners rotate through their assigned legs in order, exchanging at predefined points. Think point-to-point overnight relays run by two vans.

Timed loop: A fixed time window (e.g. midnight-to-noon) during which runners do laps of a single course. Anyone can run the next lap, and laps keep counting until the window closes.

08

Pace & ETA math

Each leg has a distance. Each runner has a pace in minutes per mile. The predicted finish time is simply distance × pace, added to the leg’s start time.

The dashboard’s “predicted progress” bar fills smoothly from 0% at start to 100% at the predicted finish, so you can eyeball at a glance how close the current runner is to the next exchange.

09

Activity log

Every leg or lap that’s started, ended, or reset is recorded, who did it, which runner it was for, and the exact timestamp. Open the menu in the app and tap “Activity log” to view it.

  • Filter: By runner, action type (legs vs laps), leg/lap number, or date range.
  • Export: Download the full log as CSV, or share it via the system share sheet.
  • Audit: Useful post-race for race directors and team retros.
10

Install on your phone

The app runs in the browser, but you can pin it to your home screen so it launches full-screen with its own icon, no browser address bar, faster start, easier to find during the race.

On supported browsers (Chrome, Edge, Samsung Internet, Android) the button above triggers the native install prompt. On iPhone/iPad Safari, it opens step-by-step instructions because Apple doesn’t expose an automatic install API.

  • iPhone / iPad (Safari): Share button → “Add to Home Screen” → Add. Must be Safari, not Chrome on iOS.
  • Android (Chrome / Edge): Tap the install button above, or use the browser’s “Install app” menu item.
  • Desktop (Chrome / Edge): Install button above, or click the install icon in the address bar.
  • Firefox: No install support, just bookmark the page or pin the tab.
11

Privacy & data

We store the minimum needed to run a team: your name, email, race pace, the legs you run, and the activity log. Data lives in a Supabase Postgres database with row-level security so only your teammates can see your team’s data.

  • No GPS: We don’t track your location. Times are entered when legs start/end.
  • No background tracking: Nothing runs when the app isn’t open.
  • No third-party analytics: No ads, no trackers, no fingerprinting.
  • Leaving a team: Captains can remove members; you can also leave from settings.
  • Auto-cleanup after the race: About two weeks after a race’s scheduled end, the team and all of its data (legs, laps, notes, activity log) are permanently deleted. Save anything you want to keep (export the activity log as CSV) before then. Personal stuff like your pace and packing list lives on your account and isn’t affected.
12

Troubleshooting & FAQ

I didn't get the magic-link email
Check your spam / promotions folder first. Add our sender address to your contacts so future emails land in your inbox. Wait 60 seconds and request another link from the sign-in screen, only the most recent link works. If you typed the email wrong, just submit the correct one; old links expire automatically.
The captain is running and no one can start the next leg
That's exactly why we allow 3 admins in addition to the captain. Open Settings before race day and promote a teammate in the other van to admin so there's always a controller available no matter who's on the course.
I joined the wrong team
Open the menu and tap "Join a team" with the correct invite code. The new team becomes active. You can switch between any teams you've joined from the same menu at any time, your pace and packing list follow you.
Can I change my pace mid-race?
Yes, anytime from Settings. Predicted ETAs for your future legs update immediately. Past leg actuals are recorded with real timestamps and aren't affected.
What happens if we start a leg by mistake?
Any captain or admin can reset the leg from the Legs tab. The reset is recorded in the activity log (who did it, when) so there's a clean audit trail. Reset only clears the start/end timestamps; the runner assignment stays.
What if a runner can't finish their leg?
Any admin or the captain can reassign the active leg to another runner from the Legs tab. The activity log captures the swap. For relay formats, you can also re-shuffle future legs in Settings to balance the load.
Does it work offline?
Not yet. You need a data connection to start/end legs and sync. The app is small and light so it works fine on weak rural cell signal, but if you have zero bars at an exchange, you'll need to step a few feet to a spot with signal to record the handoff.
Can I install it like a real app?
Yes. Tap Install app on the sign-in page (or in section 10 above). Chrome / Edge / Android / desktop will pop the native install dialog, iPhone users tap Safari's Share button → "Add to Home Screen." Once installed it launches full-screen with its own icon.
How is this different from a group text or shared spreadsheet?
A group chat tells you what someone said. This tells you what's happening right now: who's on the course, how far along, when the next exchange is, and what the other van should do next. It also keeps a tamper-resistant log so you can settle any "wait, who started leg 14?" questions after the race.
Can two teams use the same invite code?
No. Each team has its own unique 6-character code. Captains can regenerate the code from settings if it's been shared too widely or if you want to lock down joining after the roster is set.
What does the activity log actually record?
Every leg or lap that's started, ended, or reset, plus the user who did it, the assigned runner, and the exact timestamp. You can filter by runner, action, leg/lap number, or date range, and export the whole thing as CSV.
How do I leave a team?
Open Settings → Members and tap "Leave team" next to your name. The captain can also remove members. Leaving doesn't delete your account, you can join another team or create your own.
Who do I contact for help?
Reach out to whoever shared this app with you (usually your captain or race director). For bugs or feature requests, use the GitHub issues link in the app footer.
Back to sign in

DUDE, Where’s My Team? · v1