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
| App | Relationship |
|---|---|
| Red Mist | TrackStrat's data source: ChampCar's live timing. Anonymous access; the live feed carries standings during a race. |
| Race Monitor | Keep 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 Speedhive | The 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. |
| RaceHero | ChampCar 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
| Where | What it does |
|---|---|
| Live | Standings 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. |
| Projections | Projected 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. |
| Results | Race 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). |
| Teams | Every 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). |
| Paddock | Walk the paddock and log each car: fuel cell or stock tank, capacity, where it starves, notes. Works without a live race. |
| Preferences | Tracks (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 page | During 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 logging | Count jugs going into any car: full jugs plus ¼ ½ ¾ of the last translucent jug. Shows burn rate. Needs the crew code. |
| Header | Event, 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. |
| Bezel | Race progress under the header: hour ticks, filled in the flag colour, and a green diamond where our car's next stop falls. |
| iPad | Add 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.
| Part | Where it runs | Job |
|---|---|---|
| Recorder | Jeeves | Records Red Mist's live feed, standings and lap history, raw, for every event of the watched series. Never changed on race day. |
| Strat-engine | Jeeves | Every 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 loaders | Jeeves / Mac | Load finished races into the history tables: Red Mist (ChampCar) and MYLAPS Speedhive (Lemons). |
| Database | Supabase | Board, 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. |
| App | Cloudflare Pages | This 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.
| Version | Date | Changes |
|---|---|---|
| v0.19.1 | Oct 11 | Help 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.19 | Oct 11 | Preferences 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.11 | Oct 11 | Help: topics in a sticky list on the left; each section collapses (expand/collapse all). |
| v0.18.10 | Oct 11 | Help: 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.9 | Oct 11 | Class buttons in a regular-width bold font; lighter greys for secondary text. |
| v0.18.8 | Oct 11 | Code 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.7 | Oct 11 | TO GO clock: each digit holds a fixed slot, so the clock no longer shifts as it counts. |
| v0.18.6 | Oct 11 | Pit stops: "Race clock" column plus the time of day of each stop. Fixed times like 1:60 (rounding) everywhere. |
| v0.18.5 | Oct 11 | Pit stops: laps and time of the stint each stop ended (estimated for projected stops). |
| v0.18.4 | Oct 11 | No projected stops on the car page once the checkered flag is out. |
| v0.18.3 | Oct 11 | Car and team pages: labels, headings and notes in regular-width bold light cyan (was narrow dark grey). |
| v0.18.2 | Oct 11 | Tighter stat blocks on car and team pages (less padding, smaller badge, no wrapping values). |
| v0.18.1 | Oct 11 | Car 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.18 | Oct 11 | Teams 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.1 | Oct 11 | CHECKERED 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.17 | Oct 11 | Post-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.5 | Oct 11 | Car 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.4 | Oct 11 | Team 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.3 | Oct 11 | Denser: table rows 40 → 32 px, view/class/our-car buttons 38 → 32 px with tighter padding. |
| v0.16.2 | Oct 11 | Logo: the checkered flag now leans at the same 7° as the italic wordmark. |
| v0.16.1 | Oct 11 | Nothing smaller than 12 px: chips, column headings, badges, bezel labels, chart labels. Feed dial caption moved above the dial. |
| v0.16 | Oct 11 | Dark 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.15 | Oct 10 | Race 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.2 | Oct 10 | Home-screen icon (iPad, iPhone, Android) and browser tab icon from the new logo. |
| v0.14.1 | Oct 10 | New logo: checkered flag with speed streaks and an italic TrackStrat wordmark, top left of the board, help page and code prompt. |
| v0.14 | Oct 10 | Access 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.1 | Oct 10 | Tablet 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.13 | Oct 10 | Live: 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.12 | Oct 10 | Help 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.11 | Oct 10 | Paddock tab: fuel cell or stock tank, capacity, notes. |
| v0.10 | Oct 10 | Placeholder drivers (Driver123) for every stint, linkable to real drivers. |
| v0.9 | Oct 10 | Drivers as their own identity with team per race; driver aliases. |
| v0.8 | Oct 10 | Car 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.7 | Oct 10 | Reads Red Mist's live feed during races (its standings endpoint is empty while live). Team names from Race Monitor. Stream link per session. |
| v0.6 | Oct 10 | Feed health log: every update and the gap since the last. |
| v0.5 | Oct 10 | Live and Projections tabs with class filters; event bar with LIVE and flag; since-update timer; Red Mist live fields. |
| v0.4 | Oct 10 | Red Mist ↔ ChampCar event numbers; main race preferred over a same-weekend EC event. |
| v0.3 | Oct 10 | Fuel logging for any car with a crew code; burn rate. |
| v0.2 | Oct 9 | History: 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.1 | Oct 9 | First prototype: strat-engine (stops, stints, fuel window, projections), board, Supabase. |
| v0.0 | Oct 6–7 | Recorder on Jeeves, race simulator, plan. |