← Boardv0.19.1 · help

Purpose

TrackStrat is a pit-wall strategy board for amateur endurance racing (ChampCar first). A crew can watch its own car, but nobody can track fifty rivals' pit cycles by hand. TrackStrat does that for every car in the field and projects the finish: where each car will be at the checkered flag after the stops it still has to make, in class and overall.

Built first for Flying Low Motorsports #737 (E46, class C) at AMP, Oct 31 – Nov 1, 2026, and tested live at Pocono, Oct 10–11. Working title.

Using it with other apps

AppRelationship
Red MistTrackStrat's data source: ChampCar's live timing. Anonymous access; the live feed carries standings during a race.
Race MonitorKeep using it for official-looking live timing. TrackStrat reads its entry list for team names when Red Mist has none, and can cross-check it. Race Monitor can drop at starts or mid-race; TrackStrat records Red Mist independently.
MYLAPS SpeedhiveThe track's timing system and app. Lemons publishes its results there; TrackStrat loads Lemons results and laps from it into the history tables (live Lemons recording not built yet).
YouTube (ChampCar Endurance Series)Live stream; useful to confirm stops, cautions and garage visits. Each session's stream is saved with its data.
RaceHeroChampCar no longer uses it.

Positioning

Timing apps (Race Monitor, Red Mist, Speedhive) show what is happening. Pit-wall tools like KartSpot and Stint Planner plan your own stints and fuel. Data loggers like RaceCapture and Podium read your own car. TrackStrat sits between them: it watches every rival from public timing, learns their fuel windows and stop costs, and projects how the race ends. It is built around amateur-endurance facts: 5 gal gravity jugs, a 2 h stint limit, 5 min minimum stops, and a fixed finish time.

Capabilities

WhereWhat it does
LiveStandings like Race Monitor: position, car, team, class, laps, last, average and best lap, gap and diff, pits, PIT badge. Class filter; class colour on each row's edge; our car in lume green. Hover a row (mouse) for a car summary.
ProjectionsProjected finish (▲▼ against live), finish laps, pace, stops made and left, next stop (DUE in red), stint gauge filling toward the fuel window, fuel window, fuel logged.
ResultsRace debrief: finished / not running, race length, leader, fastest lap, then each class podium with its fastest lap. Full classification below with laps behind, status, pace and stops (provisional while live).
TeamsEvery team's record across past races: races, finish rate, class wins, podiums, best and average class finish, fuel window, last raced. Scope: this race, ChampCar, Lemons or all; search. Tap for the team page (stats, cars, full race history).
PaddockWalk the paddock and log each car: fuel cell or stock tank, capacity, where it starves, notes. Works without a live race.
PreferencesTracks (layout, length, Code 35 lap, median lap, Code 35 stop saving, pit in→out, green stop loss) and Series (stint limits, minimum fuel stop, mandatory stops, capacity and caution rules). Editable with the crew code.
Car pageDuring a race: stats beside the pit-stop list (each stop's lap, stint laps and time, race clock, time of day, time lost) with projected stops and their lap range; lap bar graph with 5-lap rolling average; fuel logged; team summary; lap history. From Results or a finished race: post-race view with result, gap and pace vs the class winner, time lost in pits and a stint table.
Fuel loggingCount jugs going into any car: full jugs plus ¼ ½ ¾ of the last translucent jug. Shows burn rate. Needs the crew code.
HeaderEvent, flag and LIVE badges, TO GO race clock (counts to the scheduled checkered), FEED dial (time since the last update: amber after 45 s, red after 90 s), race picker (latest, upcoming, recorded live, history), help.
BezelRace progress under the header: hour ticks, filled in the flag colour, and a green diamond where our car's next stop falls.
iPadAdd to Home Screen for a full-screen app with its own icon; Keep awake stops the screen locking; layout fits landscape and portrait.

Scope

In scope

  • ChampCar endurance races timed by Red Mist, recorded live on Jeeves (main race and EC). Lucky Dog (also on Red Mist) to be added to the recorder.
  • Projections for every car: stops, fuel windows, stop cost, pace, finish order.
  • History: ChampCar races from Red Mist; eastern and central Lemons races since 2023 from MYLAPS Speedhive.
  • Crew input: fuel jugs seen, paddock observations, track and series preferences.

Not in scope (yet)

  • Official timing or results: TrackStrat is unofficial and can lag the track; penalty laps aren't visible.
  • In-car data, radio or a "box this lap" message to the driver.
  • Live recording of Lemons (Speedhive live feed not built).
  • Planned for the next strat-engine build: caution pit-window alert, separate fuel and driver-only stops, series rule profiles and track data from Preferences, reliability in projections.

Design

  • Pit-wall monitor, dark only. High data density for a tablet at arm's length: condensed timing digits, hairline panels, nothing smaller than 12 px, touch targets of 32 px or more.
  • Colour means something. Class colour on each row's edge and team name; green, amber and red for urgency; lume green for our car and live elements; cyan for labels and calculated values; orange for unverified data.
  • Chronograph details. TO GO clock with fixed-width digits, FEED sub-dial, bezel race-progress strip.
  • Worst case by default. A rival with no measured stint is assumed able to run the 2 h maximum, so a projection never flatters us.
  • The finish is fixed in time. ChampCar races finish on time even after a late green; projections count down to the scheduled checkered flag.
  • Stops come from the field. A stop is a lap well over the field's median for the same moment (or an FT200 in-pit flag confirmed by a slow lap), so Code 35 periods aren't mistaken for stops. Time lost = that lap minus the field's median lap. Over 15 minutes is a garage visit.
  • Fuel is a range. A "5 gal" jug can be overfilled to about 5.9 gal; usable capacity is tank size minus where the car starves.
  • Honest about uncertainty. "?" marks an assumed fuel window; ≈ marks estimates; gaps under a lap are a toss-up.
  • Works with a weak signal. The last data stays on screen with its age on the FEED dial.

Architecture

Live timing flows left to right: Red Mist → Jeeves (recorder, then strat-engine) → Supabase → this app. Crew input goes back through a checked function; viewing needs the access code.

SOURCESJEEVES · ALWAYS-ON LAPTOPSUPABASECLOUDFLARE · DEVICES Red MistChampCar / Lucky Dog timinglive hub + REST snapshots Race Monitorentry list (team names) MYLAPS SpeedhiveLemons results + laps Recorderrecords every live race, rawSQLite · never changed on race day Strat-engine (every 20 s)stops, stints, fuel windows,projected finish History loadersfinished races → history Databasesessions · board · laps · stopshistory: events, teams, cars,car_races, stints, driversfuel_log · car_observationstracks · series · race_calendarread: viewers only (access code)write: strat-engine key log-fuel functioncrew writes: fuel, paddock notes,preferences · needs crew code Authviewer sign-in = access code TrackStrat appCloudflare Pagestrackstrat.getzixy.comstatic page, no install Pit walliPad (home-screen app)phones, laptops reads SQLite reads crew input sign in once per device
PartWhere it runsJob
RecorderJeevesRecords Red Mist's live feed, standings and lap history, raw, for every event of the watched series. Never changed on race day.
Strat-engineJeevesEvery 20 s: rebuilds the race from the recording, finds stops and stints, projects the finish, writes the board. Safe to restart; it recomputes from the start.
History loadersJeeves / MacLoad finished races into the history tables: Red Mist (ChampCar) and MYLAPS Speedhive (Lemons).
DatabaseSupabaseBoard, laps, stops, fuel log, paddock notes, history, preferences, race calendar, feed health log. Readable only with the access code; writes need the strat-engine key or the crew code.
AppCloudflare PagesThis web app. No install; phone, tablet and laptop; add to the iPad home screen.

Updates reach the screen about 15–20 s apart and up to ~55 s behind the track. Code: private repository zixyllc/trackstrat.

FAQ

How current is the data?

The board refreshes about every 15–20 s and can be up to about 55 s behind the track. The FEED dial in the header shows the age: amber after 45 s, red after 90 s means the feed is probably down.

What does “120m?” mean in the fuel window?

The car hasn't completed a full stint after a stop yet, so TrackStrat assumes the 2 h maximum (worst case for us). It changes to a measured window after its second stop.

Why does a car project ahead of one that's leading?

Faster pace, a stop already made, or a longer fuel window. Gaps under about a lap are a toss-up; they settle once real stops and fuel windows are known.

How are pit stops found?

From each car's Flagtronics FT200 “in pit” signal (carried by Red Mist), confirmed by a lap at least 60 s slower than the field. Cars without that signal: a lap more than 3 minutes slower than the field's median for that moment. Over 15 minutes in pit counts as a garage visit.

How is “time lost” for a stop worked out?

The stop lap's time minus the median lap of the whole field at that moment (cars finishing a lap within ±5 minutes). Under a Code 35 the field is slow too, so a stop costs less. In ChampCar a fuel stop is at least 5:00 pit-in to pit-out, so every competent team loses about the same time per stop.

What is a Code 35?

ChampCar's full-course caution: every car at 35 mph, enforced by the FT200's GPS. A lap takes track length ÷ 35 mph (4:20 at Pocono). A stop made during full Code 35 costs about 2–3 minutes less than under green; the Preferences tab estimates it for each track.

Why are there no team names sometimes?

Red Mist doesn't publish the entry list during a live race. TrackStrat uses an entry list taken from Race Monitor for the event.

How do I log fuel?

Open a car's page, tap Log fuel, tap the full jugs, then ¼ ½ ¾ for the last jug. Enter the crew code once per device. Undo is in the same box.

Who can see and change data?

Nothing can be read without the access code (asked once per device). Only the strat-engine and devices with the crew code can write (fuel logs, paddock notes, preferences).

What is the strat-engine?

TrackStrat's analysis program on Jeeves (not a car's engine). It reads the recording every 20 s and writes the board you see.

Why is a car's number different from last season?

Numbers move between teams, teams change cars, and drivers change teams. TrackStrat keeps team, car and driver separate and links them per race.

Is this official?

No. Timing and projections are unofficial and can't see penalty laps; ChampCar's official results always win.

Version history

The version number is the latest database change. Newest first.

VersionDateChanges
v0.19.1Oct 11Help rewritten for the current app: Other apps moved under Purpose, new Architecture section with a diagram, capabilities, scope, design and FAQ updated (Code 35, time lost, strat-engine).
v0.19Oct 11Preferences tab. Tracks: layout, length, Code 35 lap, median lap, Code 35 stop saving, pit in→out and green stop loss (measured or edited). Series: max stint, driver rest, minimum fuel stop, mandatory stops, timed/untimed non-fuel stops, fuel capacity and caution rules for ChampCar, Lucky Dog and Lemons. Editable with the crew code.
v0.18.11Oct 11Help: topics in a sticky list on the left; each section collapses (expand/collapse all).
v0.18.10Oct 11Help: the analysis program is now called the strat-engine (not to be confused with a car engine); access notes updated for the access code.
v0.18.9Oct 11Class buttons in a regular-width bold font; lighter greys for secondary text.
v0.18.8Oct 11Code clean-up: the 1-second timer only moves the clock, feed dial and bezel (tables redraw on new data or a tap, not every second); overlapping refreshes share one fetch; dead code removed.
v0.18.7Oct 11TO GO clock: each digit holds a fixed slot, so the clock no longer shifts as it counts.
v0.18.6Oct 11Pit stops: "Race clock" column plus the time of day of each stop. Fixed times like 1:60 (rounding) everywhere.
v0.18.5Oct 11Pit stops: laps and time of the stint each stop ended (estimated for projected stops).
v0.18.4Oct 11No projected stops on the car page once the checkered flag is out.
v0.18.3Oct 11Car and team pages: labels, headings and notes in regular-width bold light cyan (was narrow dark grey).
v0.18.2Oct 11Tighter stat blocks on car and team pages (less padding, smaller badge, no wrapping values).
v0.18.1Oct 11Car page: car block and pit stops side by side; projected stops listed after the completed ones with their lap range and race/clock time; lap history kept narrow.
v0.18Oct 11Teams tab: every team’s record across the history tables (races, finish rate, class wins, podiums, best and average class finish, fuel window, last raced), scoped to this race, ChampCar, Lemons or all, with search. Team page with stats, cars and full race history (moved off the car page, which now links to it).
v0.17.1Oct 11CHECKERED chip: white and light-grey checks with bold red text. Finished races hide the countdown and feed dial. "Same lap" behind the class winner.
v0.17Oct 11Post-race debrief on the Results tab: finished / not running, race length, overall leader and fastest lap, then each class podium with its fastest lap. Car page in post-race mode (from Results or a finished race): result, gap and pace vs the class winner, time lost in pits, and a stint-by-stint table.
v0.16.5Oct 11Car page: Back button moved into the header row. "Screen on" renamed "Keep awake" (stops the iPad dimming and locking while TrackStrat is open).
v0.16.4Oct 11Team names use all the free width (other columns fit their content); full-width digits when there is room (semi-condensed in portrait); hover card with car details on each row (mouse/trackpad).
v0.16.3Oct 11Denser: table rows 40 → 32 px, view/class/our-car buttons 38 → 32 px with tighter padding.
v0.16.2Oct 11Logo: the checkered flag now leans at the same 7° as the italic wordmark.
v0.16.1Oct 11Nothing smaller than 12 px: chips, column headings, badges, bezel labels, chart labels. Feed dial caption moved above the dial.
v0.16Oct 11Dark timing-wall redesign for the iPad: condensed timing type, class colour on each row edge, chronograph race clock, bezel race-progress strip with our next stop, feed-age sub-dial, stint gauges filling toward the fuel window, larger touch targets.
v0.15Oct 10Race picker (top right): the latest race, past races TrackStrat recorded live, past results from history (ChampCar, Lemons), and upcoming races from a new race calendar. Event name moved next to the logo. Results tab: final classification (provisional while live) with laps behind, status, pace and stops.
v0.14.2Oct 10Home-screen icon (iPad, iPhone, Android) and browser tab icon from the new logo.
v0.14.1Oct 10New logo: checkered flag with speed streaks and an italic TrackStrat wordmark, top left of the board, help page and code prompt.
v0.14Oct 10Access code: the whole app now asks for a code once per device; the data can no longer be read with the public key alone (scouting notes and fuel logs are private).
v0.13.1Oct 10Tablet layout (iPad landscape and portrait): views, class filters and our car on one row; tighter table so every column fits; Best lap hidden in portrait. "Screen on" button keeps the screen awake. Can be added to the home screen as a full-screen app. Web page only: no strat-engine or database change.
v0.13Oct 10Live: average lap column (excluding pit-stop laps). Stops now use the FT200 in-pit flag from Red Mist, confirmed by lap time; lap-time inference as fallback.
v0.12Oct 10Help page; version in the header. Paddock: "starves below" and usable capacity. Fuel jugs shown as a 5.0–5.9 gal range; partial last jug (¼ ½ ¾).
v0.11Oct 10Paddock tab: fuel cell or stock tank, capacity, notes.
v0.10Oct 10Placeholder drivers (Driver123) for every stint, linkable to real drivers.
v0.9Oct 10Drivers as their own identity with team per race; driver aliases.
v0.8Oct 10Car page: info panel, scrolling lap bar graph with rolling average, stops, fuel, history, lap rows. Class colours. Stop count fixed (one reference time); a lone first stint no longer sets the fuel window.
v0.7Oct 10Reads Red Mist's live feed during races (its standings endpoint is empty while live). Team names from Race Monitor. Stream link per session.
v0.6Oct 10Feed health log: every update and the gap since the last.
v0.5Oct 10Live and Projections tabs with class filters; event bar with LIVE and flag; since-update timer; Red Mist live fields.
v0.4Oct 10Red Mist ↔ ChampCar event numbers; main race preferred over a same-weekend EC event.
v0.3Oct 10Fuel logging for any car with a crew code; burn rate.
v0.2Oct 9History: teams, cars, results and stints from nine 2026 races. Default fuel window 2 h (worst case). Race ends at the scheduled checkered flag; finish laps.
v0.1Oct 9First prototype: strat-engine (stops, stints, fuel window, projections), board, Supabase.
v0.0Oct 6–7Recorder on Jeeves, race simulator, plan.