APEX

INITIALISING_HUD

MODULE // ABOUT

A field guide to APEX.

What this is. Why it exists. What every button does — including the red SYNC_SENSORS that nobody asked about. Skim or read it through.

BUILT_BY ANEESH · ONE_PERSON_ENGINEERING_TEAM

STORY · 001

What is APEX?

APEX is a personal project that turns raw Formula 1 telemetry into a race engineer's operating system — for an audience of one. Every fast lap streams a wall of data: GPS, throttle, brake, speed, gear, RPM, DRS. Engineering teams see that data live, in lockstep, and it's how they make a fast car faster. APEX takes the same architecture and rebuilds it for a fan who wants to feel the lap rather than just watch it.

The product is split into five modules. Each one shows the same telemetry through a different lens — a 3D opener, a working cockpit, an editorial gallery, a generative lab, and a personal library. The underlying lap is the same; the way you read it is different.

MODULES · 005

Five lenses on the same lap

FIELD_GUIDE

How to drive it

The site auto-loads with Hamilton's 2020 Silverstone pole as the default lap. Most actions ripple across modules — pick a lap in the Gallery, switch to Telemetry, and you're looking at the same lap there too.

00 · THE HUD SHELL

The bones of every screen

Across Telemetry, Gallery, Canvas, Collector and this page, the same chrome wraps everything:

  1. 01

    Sidebar (left)

    The APEX logomark, the five telemetry channels (Velocity / G-Force / Throttle / Braking / Sectors), the red SYNC_SENSORS button, and a link to your Collector.

  2. 02

    Topbar (top)

    Lap-time pill on the far left, tab nav (Telemetry, Gallery, Canvas, Collector, About), the NEXT_SESSION countdown, then the right-side tools: SEARCH (opens the command palette), BELL (live data status popover), and LIBRARY (jumps to Collector).

  3. 03

    Main content (centre)

    Whatever route you're on lives here. Each module fills the space differently — Telemetry uses a two-column grid, Gallery is a card layout, Canvas splits into preview + controls.

  4. 04

    Footer (bottom)

    Thin build strip showing the APEX OS version and data sources.

  5. 05

    Splash on first load

    A short looping video of a car driving away in slow motion plays behind the APEX wordmark for ~1.8 seconds while fonts settle.

  6. 06

    On mobile

    The sidebar collapses behind a hamburger button in the topbar. Tap it for the same channel nav as desktop.

01 · TELEMETRY

The cockpit

The main module. Read a lap channel by channel and scrub through it like a video editor would.

  1. 01

    Pick a lap

    Click ACTIVE_LAP in the top-right (or use the command palette via ⌘K). The dropdown lists every baked lap — driver, year, track, time. Selecting one resets the scrub to the moment of peak speed for dramatic first paint.

  2. 02

    Switch channels

    Click any of VELOCITY / G-FORCE / THROTTLE / BRAKING / SECTORSin the sidebar. The big centre chart swaps, the channel kicker updates, and the diagnostic prose on the right re-evaluates based on what's happening at the current scrub point.

  3. 03

    Scrub through the lap

    Drag the scrub bar at the bottom or click anywhere on the track. Arrow keys also work: ←/→ step 1%, Shift+arrow steps 5%, Home/End snap to the ends. The S1/S2/S3 markers are tick lines on the scrub track.

  4. 04

    Read the diagnostic panel (right)

    Live readouts at the scrub point: speed, lat-G, throttle, brake state, gear, RPM, DRS, distance. Underneath, a SYSTEM_LOG paragraph that changes phrasing depending on whether the driver is braking, mid-corner, or at full throttle.

  5. 05

    Watch the sequential log

    Eight rows of telemetry centered on your scrub position. The current row is highlighted red. Useful for seeing the exact sample-by-sample data.

03 · CANVAS

The lab

Real-time generative renderer. Every slider repaints the fingerprint as you move it. There's no save-and-render — what you see is what gets exported.

  1. 01

    Pick a preset (recommended start)

    Five presets sit at the top of the controls: Neural Trace, Poster Print, Phone Wallpaper, Ferrari Tribute, Studio Mono. Each snaps every knob at once. Treat them as starting points, not final answers.

  2. 02

    Pick a palette

    Five gradient swatches: NEURAL, ICE, FERRARI, EMBER, MONO. They control the throttle-to-colour ramp along the line.

  3. 03

    Pick an aspect

    Square (1:1), Poster (11:14, vertical), Phone (9:16, taller), Wide (16:9). The preview frame updates instantly.

  4. 04

    Tune the geometry + light + elements sliders

    SEGMENTS controls resolution. SMOOTHING kills GPS jitter. STROKE changes line thickness. GLOW drives the halo bloom. BRAKE_OPACITY/SIZE control the red bursts. Toggles for brake bursts / start pip / caption.

  5. 05

    Save the render

    The PRESERVE panel has two buttons:
    SAVE — names the preset and stores it in your Collector.
    SHARE_LINK — copies a URL with the full state encoded in #p=…. Anyone who opens it sees the exact same render.

  6. 06

    Export

    PNG · 1024 / 2048 / 4096 for raster, or the big red DOWNLOAD_SVG for vector. PNG bakes the bloom into pixels; SVG keeps everything resolution-independent.

04 · COLLECTOR

The archive

Personal library that lives in your browser's localStorage — nothing leaves the device unless you share a link.

  1. 01

    See your saved presets

    Each card renders the fingerprint with the params you saved, plus driver / year / track / palette / aspect / relative timestamp.

  2. 02

    Restore by clicking a card or OPEN

    That deep-links into Canvas with your saved params + active lap. The toast says 'Preset restored from share link'.

  3. 03

    Share or delete

    SHARE copies the URL-encoded preset to your clipboard. DELETE removes a single entry. CLEAR_ALL in the header wipes everything.

  4. 04

    Auto-sync across tabs

    If two Collector tabs are open and you save from Canvas in a third, both Collector tabs refresh automatically.

SIGNATURE_ACTION

SYNC_SENSORS — what it does

The big red button in the sidebar. In a real Formula 1 garage, sync sensorsmeans "force a fresh telemetry pull from the car's data link." APEX honours the metaphor.

WHAT_HAPPENS_ON_CLICK

  1. The button changes to SYNCING... with a spinner.
  2. APEX invalidates the TanStack Query cache for ["lap", <activeLapId>] and ["lap-index"].
  3. Any component reading those queries immediately re-fetches from source. For baked laps that's /laps/<id>.json. When the FastAPI service is deployed, it would be /api/laps/....
  4. On success a toast confirms "Telemetry re-synced from source" and the button returns to SYNC_SENSORS.

WHEN_TO_USE_IT

  • →You re-ran bake_hero_laps.pyand changed a lap's telemetry; the JSON on disk is new but the FE still has the old version cached in memory.
  • →You deployed a new version of the FastAPI service that returns updated payloads.
  • →You suspect a rendered chart doesn't match what's on disk and want to force a known-fresh read.
  • →You just want the haptic of a race engineer hitting a button. Valid.

Quick note: a normal page refresh (F5) does the same thing — both bust the cache. The button exists because the HUD metaphor is consistent, and because SYNC_SENSORSis far more on-brand than "invalidate cache."

SHORTCUTS

Things you can do without the mouse

KeysWhat it doesWhere
⌘KCtrl+K
Open the command paletteANYWHERE IN THE HUD
↑↓
Move selection in the paletteCOMMAND PALETTE
↵
Execute the highlighted commandCOMMAND PALETTE
Esc
Close palette / drawer / popoverANYWHERE
←→
Step scrub by 1% of lap distanceTELEMETRY
Shift+←Shift+→
Step scrub by 5%TELEMETRY
Home
Snap scrub to startTELEMETRY
End
Snap scrub to endTELEMETRY
Click+drag
Orbit the 3D cameraHERO
Scroll
Zoom the 3D cameraHERO

DATA_SOURCES

Where the numbers come from

FastF1

Primary telemetry source

Python library that wraps the F1 timing API. Covers every session 2018+ with GPS, throttle, brake, speed, gear, RPM, DRS and sector splits. Pre-baked into static JSON for the six headline laps + four extras.

OpenF1

Live session data

Public REST API for real-time and recent F1 data. Powers the NEXT_SESSION countdown in the topbar and the bell-icon status popover. Queried through the optional FastAPI backend.

Jolpica F1

Historical results (Ergast successor)

Historical race results, championship standings, driver/team metadata. Not telemetry — used for context like driver-of-the-day, season finishing positions etc.

TECH_STACK

Built with

FRONTEND

  • ·Next.js 16 (App Router)
  • ·React 19
  • ·TypeScript (strict)
  • ·Tailwind CSS v4
  • ·shadcn / Radix

3D + MOTION

  • ·Three.js
  • ·React Three Fiber
  • ·@react-three/drei
  • ·@react-three/postprocessing
  • ·Framer Motion
  • ·GSAP

DATA + CHARTS

  • ·D3.js
  • ·Zustand
  • ·TanStack Query
  • ·Custom GLSL-free SVG renderers

BACKEND

  • ·FastAPI (Python 3.13)
  • ·FastF1
  • ·Uvicorn
  • ·Docker → Fly.io

CREDITS · COLOPHON

A personal project. Designed and built by Aneesh.

APEX is a personal exploration of what Formula 1 telemetry could look like if it was designed for someone outside the engineering bay. Every part of the design system, data pipeline, 3D scene, generative renderer and HUD chrome was hand-built across a few weeks of evening work. The data itself is real and public; the visual choices are editorial.

Not affiliated with Formula 1, the FIA, or any team. Source data credit goes to FastF1, OpenF1 and Jolpica. No commercial use, no team affiliation.

SIGNED

APEX_OS // 0.1.0 · BUILD_2026.05 · ONE_PERSON_ENGINEERING_TEAM